我写了一个擦除特定网站的脚本。但是,由于本网站的设计方式,我必须为每个页面单独发出HTTP请求。鉴于我需要抓取大约2,000页,我决定只在前100页测试我的脚本。
我在不重载服务器的请求之间添加了一些延迟,但在大约第70个请求之后,主机拒绝连接。如果我重新启动脚本,它可以正常工作,直到第70个请求。
我尝试在主机拒绝连接时重试之前添加10分钟暂停,但这似乎不起作用。什么是绕过这种反刮措施的最佳方式?
以下是我的脚本外观的示例。
URL = 'http://www.url/here/{page}'
for i in range(1, 101):
try:
r = requests.get(URL.format(page=i))
except URLError:
time.sleep(600) # Wait 10 minutes before retrying
r = requests.get(URL.format(page=i))
finally:
pause = random.randint(10, 20)
time.sleep(pause)