【Beta版本发布】爬虫队长装备全面更新!
一、Beta阶段目标回顾
1.为了解决Alpha阶段线程异常泛滥的问题,我们需要一个线程池。
2.为了爬取得到的文件正确可用,我们需要一个异常清理器。
3.为了不间断爬取,管理员不必频繁运行程序点,我们需要实现动态爬取。
以上的三个主要目标在Beta开发阶段都得到了实现,除此以外,因为我们本次开发模式是“集市”,根据其他相关小组的需求我们还额外实现了两个主要功能:
1.视频链接的大量爬取。
2.基于祖先网页的专门爬取。
二、更新内容
1 新增功能
1.1 动态爬取
在Alpha阶段中,如果在爬虫正在运行的过程中,我们想要加入新的种子链接,就不得不关闭当前的爬取动作,重新运行程序后添加进行爬取。
这样的操作造成如下多个不良影响:
1.爬取的内容重复冗余性增加。
2.因为每个种子网页的最大爬取数目是不可预见的,管理员需要经常留意当前爬取动作是否已停止,进而决定是否重新运行程序爬取新网页。
动态爬取是能够在爬虫运行时不停止爬虫当前的爬取动作而添加种子URL,管理员可以在任何需要的时候进行添加动作。新功能在解决了以上两个不良影响的同时,还具备以下几个优势:
1.能为每个种子URL设定爬取数目。
2.时间容错性大,能够允许任何时间进行操作。
3.不必繁琐的关闭和重新运行程序,操作简易。
如下是两种动态爬取功能,第一种为根据当前爬取数目是否达到要求来决定已添加的种子URL是否入列,第二种为根据时间周期来入列。

1.2 视频链接爬取
设计了多个对视频链接的判定条件,由子链存在视频文件回溯到父链接,实现视频链接的爬取。选择爬取视频链接而非视频文件有如下考虑:
1.视频文件较大,下载速度慢,而视频链接既能满足对视频的需求,并且大小和普通网页并无二致。
2.其他小组的需求。

1.3 异常清理器
通过对Alpha阶段已爬取的文件和数据库的检查我们发现如下多个问题:
1.存在数据库所存文件信息在文件夹中找不到的情况。
2.存在数据库中存储路径为Null的情况。
3.存在重复文件的情况。
我们对以上多种异常情况进行分析,发现影响因素较多:Alpha版本爬虫无动态爬取而频繁运行程序导致的重复下载;某些网页不提供下载权限等等。我们根据分析认为难以解决以上所有影响因素,并且数据库和文件夹已然储存着异常信息。所以设计了异常清理器,专门的告知并对异常进行清理。

1.4 线程池
针对线程异常不可控,难调试的问题,该阶段我们专门实现了线程池,通过控制程序线程的数量并对线程异常问题进行处理,使得网页的最大爬取数,最大爬取时间都有增加,已在测试报告中列出。
1.5 通过过滤规则实现子孙网页“血统纯正”。
在“集市”的开发过程中我们发现经常有这样一种需求:给我们一个种子URL进行爬取,但我们不希望爬到其他领域的链接中。例如我们需要爬cnblogs上的博文,但我们不需要爬取cnblogs过程可能链接出去的百度、搜狐等网页。因此我们通过过滤规则来保证子孙网页与种子网页的联系。
如下我们输入了一个过滤规则:http://tieba.baidu.com/。则所有不含有http://tieba.baidu.com/的网页我们都不需要。

2 主要BUG修复
以下为修复时间较长,影响较大的BUG修复:
1.修复了一个过滤器BUG,该BUG会导致爬虫过滤器过滤掉大量的正常网页。

2.修复了一个爬取过程中的判断BUG,该BUG会导致在单次爬取动作中可能爬到具有重复URL。

3.修复了一个队数据库操作的BUG,将更新数据库的方法改为异步互斥更新方式,保证了同一时间只有一个线程占用数据库,保证了数据库数据的正确性,同时避免了SQLException。

3 相关优化
1.优化了对数据库数据的统计操作,使得Analyze响应时间更快。
2.优化了进行爬取时对进度显示以及对数据库操作的方法,使得单位时间爬取的网页数目更多(详情见测试报告)。
3.优化了爬取方式,把网页、pdf、ppt等各文档文件的爬取和下载功能充分联系到一起,提高了爬取效率。同时删减了相应的代码文件,减少了代码量。
三、环境要求
| 操作系统要求 | windows XP、windows 7、windows 8 |
| 运行环境要求 | 最新版本的JRE |
| 数据库要求 | Sql Server 2008及以上 |
四、安装方法
把jar可执行文件复制到本地即可。
五、已知的缺陷与限制
a)界面的功能键会因不规范操作而导致卡死。
六、发布方式和发布地址
该版本爬虫部署在服务器10.2.26.60上,可自行拷贝试用。
【Beta版本发布】爬虫队长装备全面更新!的更多相关文章
- Beta版本测试报告以及Beta版本发布说明
Beta版本测试报告 请根据团队项目中软件的需求文档.功能说明.系统设计和Beta阶段的计划安排,写出软件的测试过程和测试结果,并回答下述问题. 在测试过程中总共发现了多少bug?每个类别的bug分别 ...
- 团队作业-Beta版本发布
这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 Three cobblers 这个作业的目标 Beta版本发布报 ...
- beta版本发布说明与总结
1.发布说明: 软件介绍: deta版本的发布最终是一个可安装使用的窗体程序,已经由Alpha版本的应用解决方案完成到一个程序: deta版本解决了Alpha版本遗留的软件技术方面错误问题,以及针对有 ...
- 易货Beta版本发布说明
说明 由于前几天确实比较忙,所以没来得及写发布说明. 功能 我们在beta版本主要加入了以下几个功能: 一:增加了用户的发布界面 二:增加了用户的购买界面 三:使用下拉刷新取代了之前的handler后 ...
- Beta版本发布说明
发布地址 https://github.com/LongWerLingShi/DataObtainingAndHandling/tree/beta 版本开发背景 首先,应软件工程课程要求,我们小组针对 ...
- 学霸网站-Beta版本发布说明
项目名称 学霸网站 项目版本 Beta 项目团队 ourteam 发布日期 2015-1-5 一.Alpha版本实现功能简介: 1.匿名提问 2.匿名回答 3.采纳功能 4.登录.注册失败后,用户名等 ...
- Beta版本发布报告
项目名称 学霸系统写手机客户端 项目版本 Beta版本 负责人 北京航空航天大学计算机学院 hots团队 联系方式 http://www.cnblogs.com/hotsbuaa/ 要求发布日期 20 ...
- Pipeline组Beta版本发布说明
项目名称 Pipeline 项目版本 Beta版本 负责人 北京航空航天大学计算机学院 IloveSE 小组 联系方式 http://www.cnblogs.com/IloveSE 要求发布日期 20 ...
- Beta版本发布!
该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业地址:https://edu.cnblogs.com/c ...
随机推荐
- 【PAT】B1051 复数乘法(15 分)
要会使用math函数, 还要注意到用四舍五入的方法判断是否应该输出0.00 #include <math.h> #include<stdio.h> int main() { d ...
- 【微信JSSDK】PHP版微信录音文件下载
微信的录音文件上传到微信服务器上,只能保存三天. 因此需要做一个转存到自己服务器,或者七牛云的操作. 转存到自己服务器 调用微信JSSDK API 录音, 录音结束,上传到微信服务器,获取录音文件的 ...
- Unity3d自制字体
这篇教学中会使用到BMFont 这个工具 准备好Unity5.3.2版本,其他版本会有异常 一.制作字体 下载链接: http://www.angelcode.com/products/bmfont/ ...
- 3.定时器的使用(以通俗易懂的语言解释JavaScript)
1.定时器的作用: 开启定时器:setInterval -->间隔型 setTimeout -->延时型 区别:setInterval会一直执行,应用如微博间隔一段时间不断请求后台数据,看 ...
- swift class的动态派发
一.测试代码 class BaseCallClass{ func NormalCall(){} @objc func OcCall(){} @objc dynamic func OcDynamicCa ...
- metamask源码学习-controllers-network
https://github.com/MetaMask/metamask-extension/tree/master/app/scripts/controllers/network metamask- ...
- geth中UTC文件与私钥的关系
在创建了自己的本地区块链后,我们会得到一个文件夹keystore,该文件夹是用来存储你在这个区块链中创建的账户的备份钥匙文件,比如在这里我有一个账户的备份钥匙文件为:UTC--2018-07-12T0 ...
- [转]Qt 之 QFileSystemWatcher
简述 QFileSystemWatcher类用于提供监视文件和目录修改的接口. QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更. 调用addPath()函数 ...
- matlab:inv,pinv逆与伪逆
对于方阵A,如果为非奇异方阵,则存在逆矩阵inv(A)对于奇异矩阵或者非方阵,并不存在逆矩阵,但可以使用pinv(A)求其伪逆 inv: inv(A)*B实际上可以写成A\BB*inv(A)实 ...
- PAT A1136 A Delayed Palindrome (20 分)——回文,大整数
Consider a positive integer N written in standard notation with k+1 digits ai as ak⋯a1a0 ...