Web搜索技术 第一次作业 网站信息精准采集技术
前言
姑且这就算做实验报告吧。首先由于被当年信通院的OJ的各种奇怪问题惊艳到而产生心理阴影,我希望我的程序可以被人工审核。
需求分析
网站信息精准采集程序的要求
- 采集想要的内容,不多不少不重复 ~ 完备性
- 对网站不构成负担 (性能压力不大)~ 轻量采集
- 出现异常情况 ~ 自行停止程序
- 程序异常退出 ~ 自动重启
- 断点续采 ~ 鲁棒性
- 精准采集 ~ 正则表达式
- 采集过程信息及时展示 ~ 界面友好
- 采集结果实时存储 ~ 写文件
- 允许多个机器同时运行,采集不同的内容 ~ 并行性所有内容构成完备集。
技术实现
为了可以达到“界面友好”的需求,使用PyTk实现了一个GUI,因此整个程序分为两大部分:
- UI: 负责处理GUI交互
- Spider:负责爬虫相关逻辑
程序运行时会涉及两个线程:
- Mainloop:GUi主循环事件,处理点击以及页面绘制
- TimmerThread:子进程,负责计时并发送网络请求
为了降低代码耦合度,抽离如下模块:
- errors.py 定义各种自定义错误
- GUI.py 主要的GUI方面的代码,包括所有的子组件的实现
- main.py 程序入口
- spider.py 爬虫相关代码
- thread.py 计时器子线程的代码,子线程中调用GUI相关组件更新状态
- utils.py 包括正则匹配,格式化输入输出的一些工具类
具体使用
测试平台:Windows 10 专业版 1909 18363.752
Pyhton版本:3.7.3
安装依赖:
pip install -i requirements.txt
运行:
python main.py
填写学号并配置多机器(可选),点击开始即可。
中途可自由暂停、继续、停止、关闭窗口,基本不会引起文件保存错误,并且可以继续之前的进度进行爬取。
个人认为程序异常退出还要重启有点问题,会导致程序无法正常关闭,无论如何关闭,对于程序来说都是发生了一个异常,所以无论如何都会重启,并非爬虫的本分,所以未作实现。
由于本人是任务B,所以对于任务A的并未做任何实现,但是考虑到接口类似,仅仅声明了接口,如果需要可以对其进行实现即可
目前的问题
有一些符号例如'•'(\u2202)和' '(\xa0)不存在GBK对应符号,因此使用空格进行替换。
这也是为什么我对于自动判别持怀疑态度。
明知存在问题为什么还要早早交
判别程序的问题不是我的责任,我认为我已经完成了规定的项目,我既然大晚上十分兴奋写完,一定要提交一下。见识一下自动判决会出什么问题。
Description
Languages
Python
100%