finish the home work

This commit is contained in:
2020-03-25 11:34:46 +08:00
commit c7fab80594
9 changed files with 643 additions and 0 deletions

78
README.md Normal file
View File

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