我即将收集一些房地产网站的50,000条记录(使用Scrapy)。 编程已经完成并经过测试,数据库设计得当。
但我想为意想不到的事件做好准备。 那么我如何才能完美地运行刮擦,并且最小化失败和时间浪费的风险呢?
更具体地说:
答案 0 :(得分:4)
首先,研究以下主题,了解如何成为一名优秀的网络抓员:
通常,首先,您需要确保在法律上允许您抓取此特定网站并遵循其使用条款规则。另外,请检查网站robots.txt
并遵守其中列出的规则(例如,可以设置Crawl-delay
指令)。此外,一个好主意是联系网站所有者,让他们知道你要做什么或要求获得许可。
通过明确指定User-Agent
标题来识别自己。
另见:
我应该分阶段进行(小批量刮削)吗?
这是DOWNLOAD_DELAY
设置的内容:
下载者之前应该等待的时间(以秒为单位) 从同一网站下载连续页面。这可以使用 限制爬行速度以避免过于严重地击中服务器。
CONCURRENT_REQUESTS_PER_DOMAIN
和CONCURRENT_REQUESTS_PER_IP
也很重要。
调整这些设置,以免过于频繁地访问网站服务器。
我应该记录什么以及如何记录?
Scrapy在控制台上提供的信息非常广泛,但您可能希望记录爬网时引发的所有错误和异常。我个人喜欢听取spider_error
信号被触发的想法,见:
我之前应该考虑哪些其他注意事项 发射? 你还有几件事要考虑。
在某些时候,你可能会被禁止。这总是有原因的,最明显的是你仍然会抓住它们并且他们不喜欢它。有一些技巧/窍门可以避免被禁止,例如转动IP地址,使用代理,云中的网络抓取等,请参阅:
另一件需要担心的事情可能是爬行速度和缩放;此时,您可能需要考虑分发爬网过程。这有scrapyd
会有所帮助,请参阅:
尽管如此,请确保你没有越过界限并保持合法的一面。