【问题标题】:Web crawler update strategy网络爬虫更新策略
【发布时间】:2011-02-04 07:53:31
【问题描述】:

我想从某些网站抓取有用的资源(如背景图片..)。这不是一项艰巨的工作,尤其是在一些很棒的项目(如scrapy)的帮助下。

这里的问题是我不仅想爬一次这个网站。我还想保持我的爬网长时间运行并爬网更新的资源。所以我想知道网络爬虫有什么好的策略来获取更新的页面?

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

  1. 爬虫将起始 URL 添加到 URL 存储库
  2. 爬虫向 URL 存储库询问最多 N 个要爬取的 URL
  3. 爬虫抓取网址,并更新网址库中的某些信息,如页面内容、抓取时间以及内容是否已更改。
  4. 回到第 2 步

为了进一步说明,我仍然需要解决以下问题: 如何判断一个网页的“刷新率”,即表示该网页已经更新的概率?

由于这是一个悬而未决的问题,希望它会在这里带来一些富有成果的讨论。

【问题讨论】:

    标签: web-crawler scrapy


    【解决方案1】:

    您描述的“批处理”算法是实现这一点的常用方法,我已经使用scrapy 进行了一些这样的实现。

    我采用的方法是初始化您的蜘蛛启动 URL,以便让下一批抓取并正常输出数据(资源 + 链接)。然后在您选择生成下一批时处理这些。可以并行化所有这些,因此您有许多蜘蛛同时抓取不同批次,如果您将属于同一站点的 URL 放在同一批次中,那么scrapy 将负责礼貌(根据您的喜好进行一些配置)。

    一个有趣的调整是将调度分为短期(单个批次内,scrapy 内部)和长期(抓取批次之间),提供更多增量方法的一些优点,同时让事情变得更简单。

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

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

    【讨论】:

    猜你喜欢
    • 2018-08-12
    • 2011-10-17
    • 1970-01-01
    • 2012-01-13
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2015-05-12
    相关资源
    最近更新 更多