2010-04-05 96 views
4

我想从某些网站上抓取有用资源(如背景图片..)。这不是一项艰巨的工作,尤其是在scrapy等一些精彩项目的帮助下。网络爬虫更新策略

这里的问题是我不仅仅想抓取这个网站一次。我也想让我的抓取长时间运行并抓取更新后的资源。所以我想知道有没有什么好的策略让网页爬虫获得更新的页面?

下面是我想到的粗略算法。我将抓取过程分为几轮。每个URL URL都会为抓取工具提供一定数量(比如10000)的URL来抓取。然后下一轮。具体步骤是:

  1. 履带添加起始URL到URL库
  2. 履带询问最多N次URL抓取
  3. 爬虫抓取的网址,并更新某些信息,URL库,如URL库页面内容,获取时间以及内容是否已更改。
  4. 只是回到步骤2

进一步指出,我还需要解决以下问题: 如何决定“刷新性”的网页,这表明该网络的可能性页面已更新?

既然这是一个悬而未决的问题,希望这会带来一些富有成效的讨论。

回答

6

您描述的“批处理”算法是实现这一点的常见方法,我已经使用scrapy来处理几个这样的实现。

我采取的方法是初始化您的蜘蛛起始URL以使下一批抓取并正常输出数据(资源+链接)。然后根据您选择的来生成下一批。可以并行化所有这些,因此如果您将属于同一站点的URL放在同一批次中,则scrapy会照顾礼貌(根据您的偏好进行一些配置),从而让许多蜘蛛同时爬取不同批次。

一个有趣的调整是在短期内(在单个批次内,在scrapy内)和长期(在批次间)安排调度,提供更多增量方法的优点,同时保持简单一点。

您提到的抓取排序问题有多种方法(如何确定“刷新性”),最佳方法取决于您的优先级(新鲜度与全面性,是否比其他资源更重要)等)。

我想推荐Christopher Olston和Marc Najork的Web Crawling article。这是一项很棒的调查,涵盖了您感兴趣的主题(批量爬网模型和爬网排序)。

+0

pdf文章可用:http://infolab.stanford.edu/~olston/publications/crawling_survey.pdf – 2015-01-15 03:30:16

+0

请参阅frontera以使用Scrapy执行此操作https://github.com/scrapinghub/frontera – 2016-01-11 17:28:52