Web crawler 网络爬虫更新策略

Web crawler 网络爬虫更新策略,web-crawler,scrapy,Web Crawler,Scrapy,我想从某些网站抓取有用的资源(如背景图片…)。这不是一项艰苦的工作,特别是在像scrapy这样的优秀项目的帮助下 这里的问题是,我不只是想爬这个网站一次。我还希望保持爬网长期运行,并爬网更新的资源。所以我想知道,对于一个网络爬虫来说,有没有什么好的策略来更新网页 我想到了一个粗略的算法。我将爬行过程分为几轮。每轮URL存储库都将为爬虫程序提供一定数量(比如10000个)的URL进行爬网。然后是下一轮。具体步骤如下: 爬虫程序将开始URL添加到URL存储库 爬虫程序向URL存储库请求最多N个要爬网

我想从某些网站抓取有用的资源(如背景图片…)。这不是一项艰苦的工作,特别是在像scrapy这样的优秀项目的帮助下

这里的问题是,我不只是想爬这个网站一次。我还希望保持爬网长期运行,并爬网更新的资源。所以我想知道,对于一个网络爬虫来说,有没有什么好的策略来更新网页

我想到了一个粗略的算法。我将爬行过程分为几轮。每轮URL存储库都将为爬虫程序提供一定数量(比如10000个)的URL进行爬网。然后是下一轮。具体步骤如下:

  • 爬虫程序将开始URL添加到URL存储库
  • 爬虫程序向URL存储库请求最多N个要爬网的URL
  • 爬虫获取URL,并更新URL存储库中的某些信息,如页面内容、获取时间以及内容是否已更改
  • 回到第二步
  • 为了进一步说明这一点,我仍然需要解决以下问题: 如何确定网页的“刷新度”,这表示该网页已被更新的可能性

    由于这是一个开放的问题,希望它能在这里带来一些富有成效的讨论。

    您描述的“批处理”算法是实现这一点的常用方法,我已经与您一起研究了一些此类实现

    我采用的方法是初始化spider start URL,以获得下一批数据(参考资料+链接)并正常地进行爬网和输出。然后在您选择生成下一批时处理这些。所有这些都可以并行化,因此您有许多爬行器同时在不同的批中爬行,如果您将属于同一站点的URL放在同一批中,那么scrapy将注意礼貌(根据您的偏好进行一些配置)

    一个有趣的调整是将调度分为短期(在单个批内,在scrapy内部)和长期(在爬网批之间),这提供了更增量方法的一些优点,同时使事情变得更简单

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


    我想推荐克里斯托弗·奥尔斯顿和马克·纳乔克的作品。这是一个很好的调查,涵盖了您感兴趣的主题(批量爬网模型和爬网排序)。

    pdf提供的文章:请参阅frontera,了解Scrapy的实现