机械化继续给URLErrors

时间:2012-09-27 18:03:35

标签: python http screen-scraping web-scraping mechanize

我正在通过机械化自动化一些东西。我有一个工作程序登录到一个站点并在登录时转到一个页面。但是,有时我只是得到URLError声明连接已经超时,每当我通过机械化做任何事情时:

URLError: <urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond>

如果我重新启动程序或重新尝试尝试,它将正常工作。如果我使用Chrome访问同一网站,无论我多久尝试登录一次,它都不会超时。

可能是什么原因造成的?听起来机械化正在做一些不理想的事情。我在不同的网站上也有类似的模式 - URLError s,实际上没有连接问题。

编辑:我也注意到如果我这样做 - 立即重试 - 它经常有效,但是接下来我会再次失败,等等。

last_response = ...
for attempt in (1, 2):
    try:
        self.mech.select_form(nr=0)
        self.mech[self.LOGIN_FORM_DATA[1]] = self.user
        self.mech[self.LOGIN_FORM_DATA[2]] = self.password
        resp = self.mech.submit()
        html = resp.read()
        resp.close()
    except mechanize.URLError:
        self.error("URLError submitting form, trying again...")
        self.mech.set_response(last_response) #reset the response 
        continue
    break

0 个答案:

没有答案