Scrapy:在刮刮之前采取预防措施

时间:2014-11-15 16:54:04

标签: python web-scraping scrapy web-crawler

我即将收集一些房地产网站的50,000条记录(使用Scrapy)。 编程已经完成并经过测试,数据库设计得当。

但我想为意想不到的事件做好准备。 那么我如何才能完美地运行刮擦,并且最小化失败和时间浪费的风险呢?

更具体地说:

  • 我应该分阶段进行(小批量刮削)吗?
  • 我应该记录什么以及如何记录?
  • 在发布之前我应该​​考虑哪些其他注意事项?

1 个答案:

答案 0 :(得分:4)

首先,研究以下主题,了解如何成为一名优秀的网络抓员:


通常,首先,您需要确保在法律上允许您抓取此特定网站并遵循其使用条款规则。另外,请检查网站robots.txt并遵守其中列出的规则(例如,可以设置Crawl-delay指令)。此外,一个好主意是联系网站所有者,让他们知道你要做什么或要求获得许可。

通过明确指定User-Agent标题来识别自己。

另见:


  

我应该分阶段进行(小批量刮削)吗?

这是DOWNLOAD_DELAY设置的内容:

  

下载者之前应该等待的时间(以秒为单位)   从同一网站下载连续页面。这可以使用   限制爬行速度以避免过于严重地击中服务器。

CONCURRENT_REQUESTS_PER_DOMAINCONCURRENT_REQUESTS_PER_IP也很重要。

调整这些设置,以免过于频繁地访问网站服务器。

  

我应该记录什么以及如何记录?

Scrapy在控制台上提供的信息非常广泛,但您可能希望记录爬网时引发的所有错误和异常。我个人喜欢听取spider_error信号被触发的想法,见:

  

我之前应该考虑哪些其他注意事项   发射?   你还有几件事要考虑。

在某些时候,你可能会被禁止。这总是有原因的,最明显的是你仍然会抓住它们并且他们不喜欢它。有一些技巧/窍门可以避免被禁止,例如转动IP地址,使用代理,云中的网络抓取等,请参阅:

另一件需要担心的事情可能是爬行速度和缩放;此时,您可能需要考虑分发爬网过程。这有scrapyd会有所帮助,请参阅:

尽管如此,请确保你没有越过界限并保持合法的一面。