2013-12-18 101 views
1

在Python 2.7.4使用urllib2,我可以很容易地下載一個Excel文件:的urllib2下載HTML文件

output_file = 'excel.xls' 
url = 'http://www.nbmg.unr.edu/geothermal/GEOTHERM-30Jun11.xls' 
file(output_file, 'wb').write(urllib2.urlopen(url).read()) 

這導致我希望我可以用預期的文件。

然而,嘗試下載只是一個HTML文件給我一個空文件:

output_file = 'webpage.html' 
url = 'http://www.nbmg.unr.edu/geothermal/mapfiles/nvgeowel.html' 
file(output_file, 'wb').write(urllib2.urlopen(url).read()) 

我使用urllib有同樣的結果。必須有一些我很想念或不明白的東西。如何從URL下載HTML文件?爲什麼我的代碼不工作?

回答

3

如果你想下載的文件或只需保存網頁,你可以使用urlretrieve(從urllib的庫),而不是使用的讀取和寫入。

import urllib 
urllib.urlretrieve("http://www.nbmg.unr.edu/geothermal/mapfiles/nvgeowel.html","doc.html") 
#urllib.urlretrieve("url","save as..") 

如果您需要設置你必須把它放在你的文件的開頭超時:

import socket 
socket.setdefaulttimeout(25) 
#seconds 
+1

如果你能擴展這個,這將是一個答案。現在看起來它應該是對這個問題的評論。 –

+0

謝謝,我以前曾經用過這個問題,但確認它正確無誤。我認爲我遇到了覆蓋現有文件而不是下載部分的問題。 –

+0

我測試了它覆蓋現有的文件,它工作正常。您可以嘗試下載臨時文件夾中的文件。如果您使用的是Ubuntu,您可以在/ tmp /中執行。 – Ricardo

0

這可能不是直接回答這個問題,但如果你用HTTP工作,有足夠的權限來安裝python包,我真的建議用'請求'來做這件事。有一個相關的在這裏找到答案 - https://stackoverflow.com/a/13137873/45698