Python 网页抓取:睡眠和请求之间的区别(页面,超时 = x)

Luc*_*pan 1 python sleep screen-scraping timeout difference

在循环中抓取多个网站时,我注意到之间的速度差异很大,

sleep(10)
response = requests.get(url)
Run Code Online (Sandbox Code Playgroud)

和,

response = requests.get(url, timeout=10)
Run Code Online (Sandbox Code Playgroud)

也就是说,timeout速度要快得多。

此外,对于这两种设置,我预计在请求下一页之前每页的抓取持续时间至少为 10 秒,但事实并非如此。

  1. 为什么速度相差这么大?
  2. 为什么每页抓取时长不到 10 秒?

我现在使用多处理,但我认为要记住上述内容也适用于非多处理。

abc*_*ccd 5

time.sleep停止您的脚本运行一定的秒数,而这timeout是等待检索 url 的最长时间。如果在timeout时间到之前检索数据,则将跳过剩余时间。因此,使用timeout.

time.sleep不同的是,它会完全暂停您的脚本,直到它完成睡眠,然后再运行您的请求几秒钟。所以time.sleep每次都需要10多秒。

它们有非常不同的用途,但对于您的情况,您应该制作一个计时器,如果它在 10 秒之前完成,请让程序等待。