使用urllib2获取Internet资源,得到http 402错误

时间:2015-06-01 05:16:54

标签: python http urllib2

我尝试使用urllib2从字幕网站获取zip文件。

示例网站为http://sub.makedie.me,我尝试下载此文件http://sub.makedie.me/download/601943/Game%20of%20Thrones%20-%2005x08%20-%20Hardhome.KILLERS.English.HI.C.orig.Addic7ed.com.zip

我在我的脚本中测试并打印了网址。网址很好。我在网络浏览器中复制并粘贴,我可以成功下载。

首先,脚本看起来像这样:

    try:
        f = urllib2.urlopen(example_url)
        f.read()
        something...
    except URLError, e:
        print e.code

但是我收到了403错误代码。搜索完成后,我尝试将标题更改为{' User-Agent':' Mozilla / 5.0'}。代码更改为:

    try:
        req = urllib2.Request(example_url,headers={'User-Agent': 'Mozilla/5.0'})
        f = urllib2.urlopen(req)
        something...
    except URLError, e:
        print e.code

然后我得到了402错误。我想知道这是因为网站设置还是我的代码中的错误?

2 个答案:

答案 0 :(得分:1)

402表示请求目前无效。

保留供将来使用。

来自http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

402付款

保留供将来使用。最初的意图是这些代码可能被用作某种形式的数字现金或微支付方案的一部分,但这种情况并未发生,并且通常不使用此代码。如果特定IP地址发出过多请求,YouTube会使用此状态,并要求此人输入验证码。

因此可能涉及导致问题的CAPTCHA。

检查网站的Robots.txt文件:www.domain_name.com/robots.txt

答案 1 :(得分:1)

我会尝试:

urllib.urlretrieve(url, outname)

当您尝试下载文件而不是打开它时。