HTTP错误504:尝试读取reddit评论帖时网关超时

时间:2013-04-03 11:43:38

标签: python web-scraping urllib2 reddit http-status-code-504

我在尝试从reddit获取评论时遇到错误。这种情况发生在各种URL(并非所有URL都带有特殊字符),这就是其中之一。在一小时的时间范围内,对reddit.com域可能会有1000个或更多请求。

hdr = {"User-Agent": "My Agent"}
try:
     req = urllib2.Request("http://www.reddit.com/r/gaming/"
           "comments/1bjuee/when_pokΓ©mon_was_good", headers=hdr)
     htmlSource = urllib2.urlopen(req).read()
except Exception as inst:
     print inst

Output>>HTTP Error 504: Gateway Time-out

1 个答案:

答案 0 :(得分:3)

HTTP Error 504 Gateway timeout - 服务器(不一定是Web服务器)充当网关或代理,以满足客户端(例如您的Web浏览器或我们的CheckUpDown机器人)访问请求的URL的请求。此服务器未从其访问的上游服务器收到及时响应以处理您的HTTP请求。

这通常意味着上游服务器已关闭(对网关/代理没有响应),而不是上游服务器和网关/代理不同意交换数据的协议。

问题可能出现在网络的不同位置,并且没有“独特”的解决方案。你必须自己调查这个问题。

您的代码运行正常。您可能遇到的问题是:

import urllib2
hdr = {"User-Agent": "My Agent"}

while True:
    try:
        req = urllib2.Request("http://www.reddit.com/", headers=hdr)
        response = urllib2.urlopen(req)
        htmlSource = response.read()
        if response.getcode() == 200:
            break
    except Exception as inst:
        print inst

此代码将尝试请求网页,直到获得200响应(成功HTTP请求的标准响应)。当循环中断时会发生200响应,你可以做下一个请求(或你程序中的任何内容)