switch的程序流程图怎么画网络爬虫软件的研究与开发
摘要:作为一种快捷、高效访问网络海量数据的工具,通用搜索引擎自诞生以来备受人们喜爱。然而在设计上它却存在着很多不足,并且随着万维网的快速发展而日益不能满足人们的需求。基于这种背景,用于对网页进行定向抓取的主题爬虫应运而生。主题爬虫的设计理念是利用最少的资源,尽可能快而准确地抓取网络中用户关心的网页,目前已经有着非常广泛的应用。首先,了解主题爬虫提出的历史背景及当前国内外的发展状况,分析与主题爬虫设计相关的技术知识,如HTTP协议、HTML解析、中文分词等。其次,提出使用向量空间模型进行主题相关度计算。为了能够充分利用网页中丰富的启发式信息,综合运用了网页内容分析和网页链接分析技术。最后,基于对主题爬虫设计与实现方法的研究,使用Java开发一个多线程主题爬虫。
关键词:主题爬虫;向量空间模型;主题相关度;爬虫阻止协议
爬虫软件 app
1 背景及发展状况
万维网诞生以来,其独特的魅力极大地激发了人类创作的积极性,短短十几年便发展成为了目前世界上规模最大的公共数据源。然
select boot mode是什么意思
而人类的接受能力却是十分有限的,因此便产生了一种能够高效访问网络资源的需求。在这种背景下,通用搜索引擎应运而生,如比较知名的Baidu、Google。
爬虫(Crawler),又称蜘蛛(Spider)或者机器人(Robot),是一种能够高效抓取网络资源的程序。通用搜索引擎设计中用于抓取网络资源的爬虫被称为通用爬虫,这种爬虫的设计目标是尽可能快而多地抓取网络中的各种资源,具有很强的通用性。但是,随着万维网的不断发展及人类的进步,通用爬虫的应用暴露出了很大的局限性。比如大量不相关网络资源被抓取、严重浪费网络带宽、不能够支持语义查询等等。为解决所面临的问题,用于定向抓取网络资源的主题爬
虫被提上了研究日程。
最佳优先爬虫是一种简单、高效的主题爬虫。在页面主题相关度评价上,它采用了经典的向量空间模型;而在对页面中所含链接进行主题相关度预测打分时则充分考虑了链接锚文本、链接所在页面的主题相关度、兄弟链接等等各种启发式信息。随着人们对主题爬虫认识和研究的深入,各种具有智能性
的算法被相继用于了主题爬虫的设计实现,如蚁算法、遗传算法、人工鱼算法等等。这类智能爬虫所搜集到的网页具有更强的主题相关性,并且在查全率、查准率上有了很大的提高。
2 研究分析
(1)异于通用爬虫,主题爬虫设计中加入了主题相关度评价模块。所以不能苛求它达到通用爬虫的工作效率,但是我们应该将其维持在
可以接受的范围之内。因为无论主题爬虫的设计有多么巧妙,如果工
作效率不能提升上去,是不可能得到用户认同的。
(2)为充分利用CPU空闲时间(包括其他各种系统资源)、提高主
题爬虫的工作性能,采用多线程编程技术来设计实现主题爬虫。
(3)主题爬虫需要与Web服务器进行礼貌的交互:其一要通过HTTP请求中的User-Agent域报告自己的身份;其二要遵循爬虫阻止
协议,分析文件。
(4)由于相同或者相似页面的重复抓取不仅会浪费网络带宽、系统资源,还会严重降低用户体验,主题爬虫应该避免同一个网页或者
相似网页的重复抓取。
(5)主题爬虫工作过程中应尽力避免爬虫陷阱,以免对Web服务
器造成不友好的DoS攻击。
(6)爬虫程序通常都是在无人照顾的情况下运行的,因而设计一个用于事后问题诊断的爬行日志则显得尤为重要。并且所设计的日志文件应至少包括时间戳和URL,以便同时为之后的数据统计分析打下基础。
(7)主题爬虫的工作性能是受多方面因素影响的,如网络带宽、系统资源、种子质量等。需要支持用户对主题爬虫进行一些爬取参数
drop table如何恢复
上的设置,以便更好的发挥主题爬虫的工作效率。
(8)为了便于了解主题爬虫的工作状况,所设计的主题爬虫应该实时的向用户提供多方面爬取信息,如抓取时间、网页数目、抓取速度等。dubbo 配置
3 系统分析
3.1 系统架构
在主题爬虫正式开始页面抓取之前需要由用户提供一些种子。它们是用户精选的一些质量比较高的页面链接,用于对爬取主题的描述。主题爬虫就会启动多个工作线程用于爬取网络中主题相关的资源。为了能够方便、简单的管理各个工作线程,需要设置爬虫管理员,主要任务在于保证各个工作线程对工作队列的同步访问。其中的线程调度模块是由计算机操作系统来管理。由于各个工作线程的工作流程及职能是相同的,需要以一个工作线程作为分析对象。一个工作线程启动后,首先需要向爬虫管理员申请一个任务(即待下载页面的URL),并负责调用相关的下载模块将对应的页面爬取到本地。接
下来对爬取到的页面进行主题相关度评价。如果该页面的主题相关度大于某个给定的阀值,则表明该页面是主题相关的,需要将其保存到本地磁盘并进行HTML解析。对分析出的超链接进行主题相关度预测打分,如果预测分值在给定的阀值范围内,则将其保存至等待队列,否则放入抛弃队列。如果页面的主题相关度不符合要求,则应该抛弃
该页面开始下一个工作轮回,所包含的链接均不再分析。
主题爬虫设计中共涉及5个工作队列,分别是等待队列、处理队列、完成队列、错误队列和抛弃队列。队列在具体实现上可以是
基于内存的,也可以是基于数据库管理系统的。
用户提供的种子集首先被放入到等待队列,然后由主题爬虫选取分值比较高的URL放入到爬行队列进行处理。如果爬行队列中
的URL所对应的页面是主题相关的,则将其转入到完成队列;如果在URL的处理过程中出现了什么错误,则将其转入到错误队列;否则,将其转入到抛弃队列。在主题爬虫工作过程中,从页面中提取出来的预测打分值在给定范围内的URL被不断的加入到等待队列。
3.2 网络数据获取模块
主题爬虫爬取网络数据的方法,基于的是HTTP协议。为了可以获取到网络数据,我们所设计的爬虫需要模仿Web浏览器与Web 服务器进行交互通信。即首先由爬虫向Web服务器发出一个HTTP 请求,请求中封装了一些客户端的信息;然后由Web服务器发送一个HTTP响应作为对爬虫的应答。在该模块的实现中应该考虑以下几个问题:HTTP超时问题、用户代理问题、网页字节流的解码问题、
sleep cycle
网页体大小问题等。
3.3 HTML解析模块
考虑到HTML解析的复杂性,我们准备选用一个优秀的开源类库Nekohtml来完成HTML解析工作。该模块需要完成的任务包括以下几点:①分析出HTML文档的title、keywords、description、base 等;②分析出HTML文档中各标签的text部分,为接下来确定页面的主题相关性做数据上的准备;③分析出HTML文档中所包含的URL、锚文本以及URL间的兄弟父子关系,为对链接进行主题相关度预测做准备。
另外,在HTML解析的过程中,还需要解决以下问题:javascript、css、mailto等不相关链接类型的清除、URL长度限制、

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。