urllib2.urlopen(theurl).read() ...這下載文件。這個urllib2 python代碼會下載文件的頁面嗎?
urllib2.urlopen(theurl).geturl() ...是否下載文件? (多長時間服用)
urllib2.urlopen(theurl).read() ...這下載文件。這個urllib2 python代碼會下載文件的頁面嗎?
urllib2.urlopen(theurl).geturl() ...是否下載文件? (多長時間服用)
它沒有。 對我來說,在google.com上測試:
x= time.time(); urllib2.urlopen("http://www.google.com").read(); print time.time()-x
0.166881084442
x= time.time(); urllib2.urlopen("http://www.google.com").geturl(); print time.time()-x
0.0772399902344
爲什麼低估這個人?答案很好。它證明了它! – TIMEX 2009-12-13 09:31:15
謝謝亞歷克斯。 downvote我有點困惑。 – Roman 2009-12-13 09:34:04
這個答案可能是錯誤的,因爲'geturl()'*會*下載(某些)文件。測試它是否下載文件的方法是使用Wireshark之類的東西來查看網絡流量,而不是使用計時器。如果問題是「geturl()'下載整個文件,即使它很大?」那麼答案是「不」,很公平。但它並不像這個答案那樣明確,而且使用計時器來推斷網絡上發生的事情是不可靠的。 – RichieHindle 2009-12-13 11:18:19
使用getURL()方法返回的真正 URL頁面。在某些情況下,HTTP服務器會將客戶端重定向到另一個URL,即 。 urlopen()函數 處理這個透明,但在 一些情況下,調用者需要知道 哪個URL客戶端被重定向到 。 geturl()方法可用於在此重定向的URL處獲取 。
這都是事實,但它沒有回答這個問題。 – RichieHindle 2009-12-13 09:06:42
No. geturl()返回url。
例如; urllib2.urlopen("http://www.python.org").geturl()
返回字符串'http://www.python.org'。
你可以很容易地在Python交互式shell中找到這種東西,例如:
$ python
Python 2.4.3 (#1, Jul 27 2009, 17:57:39)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib2
>>> u = urllib2.urlopen("http://www.python.org")
>>> u.geturl()
'http://www.python.org'
>>>
測試了Wireshark和Python 2.5:urllib2.urlopen(theurl).geturl()
下載身體的某些。它發出一個GET
,讀取頭部和身體的幾個K,然後停下來。
是的,這是因爲重定向 - 我假設urllib2支持正確的(http 301/302)重定向和「 Kimvais 2009-12-13 09:07:21
'geturl()'不下載任何內容,'urllib2.urlopen(theurl)'。 – 2009-12-13 12:47:05
@LukášLalinský:你用網絡監控工具測試過,是嗎?當我這樣做時,我查看了URL http://entrian.com/source-search,它確實*下載了一些內容。 – RichieHindle 2009-12-13 14:02:25
urllib2.urlopen()返回一個類似於對象的文件,以便在使用urlopen()時實際下載文檔並將其加載到機器的內存中,您可以使用文件函數來讀取寫入文件...
q若要店python.org到本地文件d:\ python.org.html
from urllib2 import urlopen
doc = urlopen("http://www.python.org")
html=doc.read()
f=open("d:/python.org.html","w+")
f.write(html)
f.close()
,或者乾脆利用的urllib
import urllib
urllib.urlretrieve("http://www.python.org","d:/python.org.html")
希望幫助;)
爲了記錄,因爲我的回答並不完全正確,我認爲你應該把我接受的答案轉換爲RichieHindle的答案。我試圖刪除它,但不會讓我刪除接受的答案。 – Roman 2009-12-28 23:59:59