Python:Urllib2返回404

时间:2014-03-24 04:41:31

标签: python urllib2

我尝试使用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

2 个答案:

答案 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()