我在尝试从 reddit 获取评论的 http 时遇到错误。各种 URL 都发生过这种情况(并非所有 URL 都带有特殊字符),这就是其中之一。在一小时内,可能有 1000 个或更多对 reddit.com 域的请求。
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
HTTP 错误 504 网关超时 http://www.checkupdown.com/status/E504.html- 服务器(不一定是 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 响应发生时,循环将中断,您可以执行下一个请求(或程序中的任何内容)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)