2015-11-04 18 views
-5

我想編寫一個Python程序來自動填充網頁表單。在搜索很多時,我發現這個代碼。Python中'urlretrieve'函數的屬性是什麼?

import urllib urllib.urlretrieve("http://www.google.com/", "somefile.html", lambda x,y,z:0, urllib.urlencode({"username": "xxx", "password": "pass"}))

此功能需要花費很多的爭論。你能解釋一下每個論點的含義嗎?

+0

閱讀文檔https://docs.python.org/2/library/urllib.html –

回答

0

如果我們看看official Python documentation for urllib.urlretrieve,我們得到了一個很好的解釋:

複製,通過URL表示到本地文件的網絡對象,如果必要的。 如果URL指向本地文件,或存在對象的有效緩存副本,則不會複製該對象。返回的元組(filename, headers)其中filename是在其下對象 可以發現本地文件名,和headers是任何由urlopen()返回的對象 的info()方法返回(遠程對象,可能緩存)。 例外情況與urlopen()相同。

第二個參數(如果存在)指定將 複製到(如果不存在,該位置將是具有生成名稱的臨時文件)的文件位置。 第三個參數(如果存在)是一個掛鉤函數,一旦建立網絡連接,將調用 ,並且在每個 塊之後讀取一次。該鉤子將傳遞三個參數;一個 到目前爲止傳輸的塊的數量,塊大小(以字節爲單位)以及該文件的總大小 。在較舊的FTP 服務器上,第三個參數可能爲-1,因爲檢索 請求時不返回文件大小。

如果url使用http:方案標識符,可選的數據 參數可被給予以指定POST請求(通常是請求 類型是GET)。數據參數必須以標準 application/x-www-form-urlencoded格式;請參閱下面的urlencode()功能 。

更改版本2.5:urlretrieve()將提高ContentTooShortError 當它檢測到可用的數據的量小於所述 預期量(它是由內容長度報頭 報告的大小)。例如,這可能發生在下載中斷時 。

內容長度被視爲一個下界:如果有更多的數據 閱讀,urlretrieve()讀取更多的數據,但如果較少的數據是可用的, 它引發異常。

在這種情況下,您仍然可以檢索下載的數據,它將 存儲在異常實例的內容屬性中。

如果沒有提供Content-Length標頭,urlretrieve()不能檢查其下載的數據的大小,並且只是返回它。在這個 的情況下,你只需要假定下載成功。

順便說一下,它們被稱爲參數或參數,而不是屬性。

相關問題