【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 ...
随机推荐
- Linux 小知识翻译 - 「Linux」怎么读?
主要讨论日语中的读法,所以没有完全按照原文来翻译. 「linux」的读法有很多(这里指在日语中),代表性的读法有以下几种: A). 李纳苦思 B). 李奴苦思 C). 纳依纳苦思 A和B相同的是将 l ...
- POI写Word换行
本文旨在描述基于变量替换生成Word doc文件的换行方式.Word换行主要有两大类,一类是表格单元格文本的换行,另一类是表格之外的文本的换行.对于表格外的文本我们可以使用“\r”或者“(char)1 ...
- 解决Chunkize warning while installing gensim问题
问题: UserWarning: detected Windows; aliasing chunkize to chunkize_serial warnings.warn("detected ...
- flare-spork: 自己维护的Pig on Spark项目
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zbf8441372/article/details/24726501 关于flare-spork 非 ...
- 有关科学计算方面的python解决
在科学计算方面,一般觉得matlab是一个超强的东西.此外还有R. 至于某种语言来说,一般都要讲究一些特别的算法,包含但不限于: 矩阵方面的计算 指数计算 对数计算 多项式运算 各类方程求解 总之.仅 ...
- EXCEL 偶数、奇数行分开求和公式
例举 : A1行是 123 A2行是 321 A3行是 456 A4行是 789我是加的是A1+A3得出的和还有加的是A2+A4得出的和因为要A1+A3一直加到A601,我用很笨的方式像这样子一个个加 ...
- usb-cam (2)摄像机标定
http://blog.csdn.net/heyijia0327/article/details/43538695 官方也给出了单目的标定教程和双目视觉的标定教程.本教程基于usb_cam pack ...
- 在centos7上修改docker加速镜像为阿里云
使用docker pull,命令下载镜像太慢了,默认是从国外的,本文记录下如何配置国内阿里云竞相加速方式. 登录https://cr.console.aliyun.com,如下, 阿里云会为每个用户提 ...
- Qt 打包发布程序
利用Qt Creator写好程序,选择对应的编译器编译程序. 编译完成会在项目同级目录生成对应的目录来保存编译后的输出. 打包程序就要选择Qt自带的CMD工具,分别有下面几种. 比如,打包VS2017 ...
- PAT A1110 Complete Binary Tree (25 分)——完全二叉树,字符串转数字
Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...