【问题标题】:Incrementally crawl a website with Scrapy使用 Scrapy 增量爬取网站
【发布时间】:2016-05-17 21:24:39
【问题描述】:

我是爬虫新手,想知道是否可以使用 Scrapy 逐步爬取 CNBC.com 等网站?例如,如果今天我爬取了一个站点的所有页面,那么从明天开始我只想收集新发布到该站点的页面,以避免爬取所有旧页面。

感谢您提供任何信息。或对此进行输入。

【问题讨论】:

  • 一般来说不,您必须抓取所有页面才能查看发生了什么变化。但是,在某些站点中,您可能会通过检索每个文档的前 X 个字节(假设服务器支持 Range 查询)来从 meta 标记中获取更新时间戳。

标签: scrapy web-crawler


【解决方案1】:

是的,您可以,而且实际上非常简单。每个新闻网站都有一些非常重要的索引页面,例如主页和类别(例如政治、娱乐等)。没有一篇文章至少会在这些页面中浏览几分钟。每分钟左右扫描这些页面并仅保存链接。然后对数据库中已有的内容进行比较,并每天进行几次抓取以抓取所有丢失的链接。非常标准的做法。

【讨论】:

    【解决方案2】:

    请尝试使用 scrapy 插件 scrapy-deltafetch ,它会让您的生活更轻松。

    【讨论】:

      【解决方案3】:

      简短回答:不。

      更长的答案:您可以做的是将文章 id 或文章 url 写入文件,并在抓取期间,将 id 或 url 与文件中的记录匹配。

      记住只加载一次文件并将其分配给一个变量。抓取时不要在迭代期间加载它。

      【讨论】:

      • 这是做增量爬取的常见做法吗?我认为这是大多数(如果不是全部)网络爬虫的常见任务。在这种情况下,每次您都必须重复访问之前访问过的所有页面。谷歌也这样做吗?鉴于整个网络如此庞大,这听起来像是一项糟糕的工作。
      • Google 通常会从网站所有者那里获取站点地图。大多数爬虫所做的基本上是浏览它在网站上找到的所有链接。如果它已经爬过也没关系。如果网站正确完成,文章页面将包含微数据 sn-ps(vcard 或其他名称)以及作者、发布的时间戳、评级等。这对 google bot 有很大帮助
      • 重复数据删除作为那些大公司的后处理步骤发生......不是在爬虫级别。这就是他们如何归因和惩罚重复内容的方式。它们还具有每个 URL/域的刷新频率,具体取决于站点上内容更改的速度。他们也不关心站点地图 :-) 但他们尊重 robots.txt。注释很好,我想它们可能已经推广了一段时间,以努力推动行业向更高质量的标记迈进,并为更多语义内容铺平道路,但它们对于搜索和识别独特内容都不是必需的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多