2011-07-01 81 views
5

我已經寫上蟒解析器來從互聯網上下載圖片:如何正確地通過python-urllib2通過HTTP下載文件?

import urllib2 

for i in xrange(1,10): 
    r = urllib2.urlopen('http://example.com/'+str(i)+'.gif')) 
    f = open('C:\\' + str(i) + '.gif', 'w+') 
    f.write(r.read()) 
    f.close() 

的圖像無法打開。 Windows說'構建映像時出錯'。但我發現接收文件的每一行比原始文件的這一行少一個字節,但兩者看起來都很相似。如何下載正確的文件?

+3

在Windows上,你需要指定的WB',而不是 'W +' –

+0

它的工作原理。謝謝。 =) – shunter

回答

13

使用Windows時,您可能需要把 「二元」 標誌b開放...

f = open(r'C:\\'+str(i)+'.gif','wb') 
+0

向下投票關心評論? –

5

在Windows上,你需要指定的WB',而不是 'W +'

5

你可以嘗試urllib.urlretrieve - 它自己處理大部分細節。
所以,你的代碼看起來就像這樣:

for i in xrange(1,10): 
    urllib.urlretrieve('http://example.com/'+str(i)+'.gif'), 'C:\'+str(i)+'.gif','w+')