在webscraping时绕过连接拒绝

时间:2018-03-31 03:42:22

标签: python python-3.x

我写了一个擦除特定网站的脚本。但是,由于本网站的设计方式,我必须为每个页面单独发出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)

0 个答案:

没有答案