我尝试使用python从URL读取一些内容,但每次尝试都会获得404。
这是我的测试代码和违规网址:
url = 'http://supercoach.heraldsun.com.au'
headers = {"User-agent": "Mozilla/5.0"}
req = urllib2.Request(url, None, headers)
try:
handle = urllib2.urlopen(req)
except IOError, e:
print e.code
该网站在浏览器中运行良好,我之前对此脚本没有任何问题,但最近对该网站的更新导致其失败。
我已尝试添加用户代理标头,因为类似的问题已作为建议。
为什么这不起作用的任何想法?
由于 JP
答案 0 :(得分:1)
使用requests
,它提供了Python中的库的友好包装;它handles redirection for you。
您的请求代码只是:
import requests
r = requests.get('http://supercoach.heraldsun.com.au')
答案 1 :(得分:1)
尝试设置Cookie并增加允许的重定向次数:
import urllib2
from cookielib import CookieJar
class RedirectHandler(urllib2.HTTPRedirectHandler):
max_repeats = 100
max_redirections = 1000
def http_error_302(self, req, fp, code, msg, headers):
print code
print headers
return urllib2.HTTPRedirectHandler.http_error_302(
self, req, fp, code, msg, headers)
http_error_300 = http_error_302
http_error_301 = http_error_302
http_error_303 = http_error_302
http_error_307 = http_error_302
cookiejar = CookieJar()
urlopen = urllib2.build_opener(RedirectHandler(),
urllib2.HTTPCookieProcessor(cookiejar)).open
request = urllib2.Request('http://supercoach.heraldsun.com.au',
headers={"User-agent": "Mozilla/5.0"})
response = urlopen(request)
print '*' * 60
print response.info()
print response.read()
response.close()