finish the home work
This commit is contained in:
78
README.md
Normal file
78
README.md
Normal file
@@ -0,0 +1,78 @@
|
||||
Web搜索技术 第一次作业 网站信息精准采集技术
|
||||
===
|
||||
|
||||
## 前言
|
||||
|
||||
姑且这就算做实验报告吧。首先由于被当年信通院的OJ的各种奇怪问题惊艳到而产生心理阴影,我希望我的程序可以被**人工审核**。
|
||||
|
||||
## 需求分析
|
||||
|
||||
网站信息精准采集程序的要求
|
||||
|
||||
- [x] 采集想要的内容,不多不少不重复 ~ 完备性
|
||||
- [x] 对网站不构成负担 (性能压力不大)~ 轻量采集
|
||||
- [x] 出现异常情况 ~ 自行停止程序
|
||||
- [ ] 程序异常退出 ~ 自动重启
|
||||
- [x] 断点续采 ~ 鲁棒性
|
||||
- [x] 精准采集 ~ 正则表达式
|
||||
- [x] 采集过程信息及时展示 ~ 界面友好
|
||||
- [x] 采集结果实时存储 ~ 写文件
|
||||
- [x] 允许多个机器同时运行,采集不同的内容 ~ 并行性所有内容构成完备集。
|
||||
|
||||
## 技术实现
|
||||
|
||||
为了可以达到“界面友好”的需求,使用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
|
||||
|
||||
安装依赖:
|
||||
|
||||
```bash
|
||||
pip install -i requirements.txt
|
||||
```
|
||||
|
||||
运行:
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
填写学号并配置多机器(可选),点击开始即可。
|
||||
|
||||
中途可自由暂停、继续、停止、关闭窗口,基本不会引起文件保存错误,并且可以继续之前的进度进行爬取。
|
||||
|
||||
个人认为程序异常退出还要重启有点问题,会导致程序无法正常关闭,无论如何关闭,对于程序来说都是发生了一个异常,所以无论如何都会重启,并非爬虫的本分,所以未作实现。
|
||||
|
||||
由于本人是任务B,所以对于任务A的并未做任何实现,但是考虑到接口类似,仅仅声明了接口,如果需要可以对其进行实现即可
|
||||
|
||||
|
||||
## 目前的问题
|
||||
|
||||
有一些符号例如'•'(\u2202)和' '(\xa0)不存在GBK对应符号,因此使用空格进行替换。
|
||||
|
||||
这也是为什么我对于自动判别持怀疑态度。
|
||||
|
||||
## 明知存在问题为什么还要早早交
|
||||
|
||||
判别程序的问题不是我的责任,我认为我已经完成了规定的项目,我既然大晚上十分兴奋写完,一定要提交一下。见识一下自动判决会出什么问题。
|
||||
Reference in New Issue
Block a user