Scrapy 中“CONCURRENT_REQUESTS_PER_IP”设置的目的是什么?它如何与“CONCURRENT_REQUESTS”一起使用?
我正在使用代理提供商来处理代理轮换。如果我将“CONCURRENT_REQUESTS_PER_IP”设置为 10,它会将代理提供商分配的每个 IP 的请求限制为 10 个,还是 Scrapy 会以不同的方式对待这些 IP?
谢谢!
我的睾丸场景是这样的:
如果我的代理提供商提供 75 个 IP,并且我配置 CONCURRENT_REQUESTS_PER_IP = 5 以及 CONCURRENT_REQUESTS = 150,这是否意味着 150 个并发请求的全局上限将覆盖 CONCURRENT_REQUESTS_PER_IP 设置?具体来说,Scrapy 是否会分配请求,使每个 IP 限制为大约 2 个并发请求(总共 150 个 ÷ 75 个 IP),还是会优先达到每个 IP 的 CONCURRENT_REQUESTS_PER_IP 限制,直到达到全局上限?
CONCURRENT_REQUESTS
定义了Scrapy下载器将执行的并发(即同时)请求的最大数量。如果将其设置为非零数字 n
,则最多可以同时执行 n
个请求。
当你执行请求时,你必须有一个
target
域名或ip,就像你坐公交车直奔你的target
一样。如果使用代理,就像您乘坐公共汽车A
到车站,然后转乘公共汽车B
到target
。
CONCURRENT_REQUESTS_PER_IP
和CONCURRENT_REQUESTS_PER_DOMAIN
定义了与CONCURRENT_REQUESTS
相同的限制,但它用于target
的ip或域,与传输无关(即您正在使用的代理,这就是方式)你就到达了target
)。这三个设置的更改不会影响代理(及其提供者)。它们仅影响 target
服务器。
当
CONCURRENT_REQUESTS_PER_IP
设置为非零数字n
时,CONCURRENT_REQUESTS_PER_DOMAIN
会被scrapy忽略。CONCURRENT_REQUESTS
设置为非零数字 m
并且 CONCURRENT_REQUESTS_PER_IP
或 CONCURRENT_REQUESTS_PER_IP
设置为非零数字 n
时,总共最多可以同时执行 m
个请求。如果您的 scrapy 蜘蛛中有多个 target
,则每个 n
不能同时执行超过 target
个请求。