2011-03-08 86 views
0

我試圖通過蟒蛇打開一個URL這樣的urllib2拋出一個錯誤的URL,而它的瀏覽器

import urllib2 
    f = urllib2.urlopen('http://www.futurebazaar.com/Search/laptop') 

它拋出以下錯誤

文件「C中正常打開: \ Python26 \ lib \ urllib2.py「, 行1134,在do_open r = h.getresponse()文件」C:\ Python26 \ lib \ httplib.py「,行 986,getresponse response.begin()文件「C:\ Python26 \ lib \ httplib.py」,行 391,在開始 版本,狀態原因= self._read_status()文件 「C:\ Python26 \ lib中\ httplib.py」,線路355 ,在_read_status 加註BadStatusLine(線)httplib.BadStatusLine

但是,此網址是通過瀏覽器打開。

+0

你身後的代理? – Geo 2011-03-08 16:01:27

+0

你的數據包嗅探器說什麼? – 2011-03-08 16:07:34

回答

5

網站壞了。如果未提供可選的「Accept」標頭,則該站點會關閉連接而不作出響應;這是無效行爲。

解決方法:

import urllib2 
req = urllib2.Request('http://www.futurebazaar.com/Search/laptop') 
req.add_header('Accept', '*/*') 
f = urllib2.urlopen(req) 
+1

嘿,非常感謝。你是如何設法找到的? – Jijoy 2011-03-08 16:29:04

+0

我剛剛在瀏覽器中加載了頁面,並抓取了它發送的HTTP標頭,並將其與urllib發送的標頭進行比較,然後一次一個地移動標頭,直到找到打開頁面的標頭。 – 2011-03-08 17:14:22

+0

很好。再次感謝幫助我:) – Jijoy 2011-03-08 17:24:27

相關問題