Java爬虫框架.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java爬虫框架

一、????????架构图 那里搜网络爬虫框架主要针对电子商务网站进行数据爬取,分析,存储,索引。 ? 爬虫:爬虫负责爬取,解析,处理电子商务网站的网页的内容 数据库:存储商品信息 索引:商品的全文搜索索引 Task队列:需要爬取的网页列表 Visited表:已经爬取过的网页列表 爬虫监控平台:web平台可以启动,停止爬虫,管理爬虫,task队列,visited表。 二、????????爬虫 1.??????流程 1)???????Scheduler启动爬虫器,TaskMaster初始化taskQueue 2)???????Workers从TaskQueue中获取任务 3)???????Worker线程调用Fetcher爬取Task中描述的网页 4)???????Worker线程将爬取到的网页交给Parser解析 5)???????Parser解析出来的数据送交Handler处理,抽取网页Link和处理网页内容 6)???????VisitedTableManager判断从URLExtractor抽取出来的链接是否已经被爬取过,如果没有提交到TaskQueue中 ? 2.??????Scheduler Scheduler负责启动爬虫器,调用TaskMaster初始化TaskQueue,同时创建一个monitor线程,负责控制程序的退出。 何时退出? 当TaskQueue为空,并且Workers中的所有线程都处于空闲状态。而这种形势在指定10分钟内没有发生任何变化。就认为所有网页已经全部爬完。程序退出。 3.??????Task Master 任务管理器,负责管理任务队列。任务管理器抽象了任务队列的实现。 l????????在简单应用中,我们可以使用内存的任务管理器 l????????在分布式平台,有多个爬虫机器的情况下我们需要集中的任务队列 在现阶段,我们用SQLLite作为任务队列的实现。可供替代的还有Redis。 任务管理器的处理流程: l????????任务管理器初始化任务队列,任务队列的初始化根据不同的配置可能不同。增量式的情况下,根据指定的URL List初始化。而全文爬取的情况下只预先初始化某个或几个电子商务网站的首页。 l????????任务管理器创建monitor线程,控制整个程序的退出 l????????任务管理器调度任务,如果任务队列是持久化的,负责从任务队列服务器load任务。需要考虑预取。 l????????任务管理器还负责验证任务的有效性验证,爬虫监控平台可以将任务队列中的某些任务设为失效? 4.??????Workers Worker线程池,每个线程都会执行整个爬取的流程。可以考虑用多个线程池,分割异步化整个流程。提高线程的利用率。 5.??????Fetcher Fetcher负责直接爬取电子商务网站的网页。用HTTP Client实现。HTTP core 4以上已经有NIO的功能,?用NIO实现。 Fetcher可以配置需不需要保存HTML文件 6.??????Parser Parser解析Fetcher获取的网页,一般的网页可能不是完好格式化的(XHTML是完美格式化的),这样就不能利用XML的类库处理。我们需要一款比较好的HTML解析器,可以修复这些非完好格式化的网页。 熟悉的第三方工具有TagSoup,nekohtml,htmlparser三款。tagsoup和nekohtml可以将HTML用SAX事件流处理,节省了内存。 已知的第三方框架又使用了哪款作为他们的解析器呢? l????????Nutch:正式支持的有tagsoup,nekohtml,二者通过配置选择 l????????Droids:用的是nekohtml,Tika l????????Tika:tagsoup 据称,tagsoup的可靠性要比nekohtml好,nekohtml的性能比tagsoup好。nekohtml不管是在可靠性还是性能上都比htmlparser好。具体结论我们还需要进一步测试。 我们还支持regex,dom结构的html解析器。在使用中我们可以结合使用。 进一步,我们需要研究文档比较器,同时需要我们保存爬取过的网站的HTML.可以通过语义指纹或者simhash来实现。在处理海量数据的时候才需要用上。如果两个HTML被认为是相同的,就不会再解析和处理。 7.??????Handler Handler是对Parser解析出来的内容做处理。 回调方式(visitor):对于SAX event处理,我们需要将handler适配成sax的content handler。作为parser的回调方法。不同事件解析出来的内容可以存储在HandlingContext中。最后由Parser一起返回。 主动方式:需要解

文档评论(0)

jiuqie957379 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档