设置每个域的并发请求数

一次抓取一个站点的 URL 通常效率很低。 因此,在任何给定时间通常都会同时向目标站点发出多个页面请求。 通常,远程 Web 服务器可以非常有效地处理多个并发请求,而在您这边,您只需等待每个请求返回数据,因此并发通常非常适合您的抓取工具。

但这也是智能网站可以识别并标记为可疑活动的模式。 而且爬虫端和网站都存在实际限制。 并发请求越多,双方需要的内存、CPU、网络连接和网络带宽就越多。 这些都涉及成本,并且这些值也存在实际限制。

因此,对同时向任何 Web 服务器发出的请求数量设置限制通常是一个好习惯。

工作原理

有多种技术可用于控制并发级别,并且控制多个请求和执行线程的过程通常会非常复杂。 我们不会在这里讨论如何在线程级别完成此操作,仅提及 Scrapy 中内置的构造。

Scrapy 的请求本质上是并发的。 默认情况下,Scrapy 最多会向任何给定域同时发送八个请求。 您可以使用 CONCURRENT_REQUESTS_PER_DOMAIN 设置更改此设置。 以下将值设置为 1 个并发请求: