抓取并监控+1000个网站

时间:2013-10-27 13:44:14

标签: python scrapy

我需要帮助定义一个工具的架构,该工具每天会抓取1000多个大型网站以进行新的更新。

我打算在这个项目中使用Scrapy:

  • 为Scrapy提供每个网站的项目,我如何处理1000多个网站并将其与Scrapy一起存储在一个项目中?我尝试添加项目生成器,但这是一个好主意吗?
  • 如何判断网站是否更新了新内容,以便我可以再次删除它?

谢谢!

2 个答案:

答案 0 :(得分:10)

Scrapy是这个项目的绝佳选择。有关抓取许多(数百万)网站的一些具体建议,请参阅documentation on broad crawls,但只有1000个网站不太重要。您应该只使用一个项目和一个蜘蛛 - 不要生成项目!要么不定义allowed_domains属性,要么确保它仅限于当前正在抓取的域集。您可能希望拆分域,以便每个进程只抓取一个子集,允许您并行化爬网。

您的蜘蛛需要关注当前域中的所有链接,这里是跟随所有链接的an example蜘蛛,以防万一。我不确定你要对raw html做什么处理。您可能希望限制每个网站的深度或页数(例如using depth middleware)。

关于重新访问网站,请参阅delatafetch middleware,了解如何仅提取新网址。也许你可以从那开始并自定义它。

答案 1 :(得分:0)

我将有兴趣看看有什么其他答案。我已经完成了一些网络抓取/报废代码,我自己使用urllib编写代码来获取html然后只是搜索html我需要的东西,但还没有尝试过scrapy。

我想看看是否存在差异,您可能只需要比较之前和新的html网页,但您需要找出要忽略的更改,例如日期等,或者你正在寻找什么具体的变化,除非有一个更简单的方法来使用scrapy做到这一点。

在存储方面,您可以将html数据存储在文件系统中,或者只是将其作为字符串写入数据库。只是像SQLite这样的本地数据库应该可以正常工作,但还有很多其他选择。

最后,我还建议您查看您计划抓取的网站上的条款,并检查robots.txt中的指导(如果包含在html中),因为有些网站会指导他们对此感到满意的频率网络爬虫使用它们等。