2015-06-01 59 views
0

我試圖使用urllib2從字幕網站獲取zip文件。使用urllib2獲取Internet資源,獲取http 402錯誤

的示例網站是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錯誤。我想知道是因爲網站設置還是因爲我的代碼中的錯誤?

回答

1

我會嘗試:

urllib.urlretrieve(url, outname) 

與您試圖下載的文件,而不是將其打開。

+0

這工作正常。謝謝。 – Nemo

1

402表示該請求目前無效。

它被保留供將來使用。

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

402需要付費

保留供未來使用。最初的意圖是這個代碼可能被用作某種形式的數字現金或微支付方案的一部分,但這並沒有發生,而且這種代碼通常不被使用。如果某個特定IP地址提出了過多請求,YouTube會使用此狀態,並要求此人輸入驗證碼。

因此,可能有一個CAPTCHA涉及導致問題。

檢查該網站的robots.txt文件:www.domain_name.com/robots.txt

+0

感謝您的回答。但我沒有提出過多的要求。我只請求一次。如果我在瀏覽器中使用這個URL,它可以正常工作。這是爲什麼? – Nemo

+0

如果你甚至使用頭來嘗試和混淆網站,這對我來說沒有意義。否則,我會說這個網站可能不允許自動瀏覽器下載。檢查網站的robots.txt? –

+0

對robots.txt說:網站地圖:http://sub.makedie.me/sitemap.xml 用戶代理:Googlebot的 不允許:/分/靜態 不允許:/用戶/ TPL 不允許:/ imgdb 不允許: /軟件 不允許:/ discuz 不允許:/ splayer – Nemo