![](/img/trans.png)
[英]downloading with urllib.request.urlretrieve takes fixed time
[英]urllib.request.urlretrieve not downloading files over HTTPS
以下URL是用於下載文本文件的下載鏈接。 如果我將URL粘貼到Firefox中,它將下載實際內容,即文本文件。 但是,當使用urlretrieve
它給了我一些html源代碼文件。
>>> import urllib
>>> down_link='URL' #URL is a ***HTTPS*** link to download .txt file
>>> file=urllib.request.urlretrieve(down_link)
這是我得到的輸出:
>>>
('C:\\Users\\rakesh.j.kulkarni\\AppData\\Local\\Temp\\tmps7559wgi'
http.client.HTTPMessage object at 0x03A3C610>)
當打開文件時,我得到html源文件,當用瀏覽器打開該文件時,它是同一網頁的登錄表單,
所以我必須想出另一種方法來暫時做同樣的事情,直到問題解決為止
subprocess.Popen(["C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", down_link])
然后,我去下載並處理文件。
首先,您應該導入urllib.request
,而不僅僅是urllib(在Py3中)。
並且您正在將對象分配給變量,以便其為您提供對象實例作為輸出。 沒問題,只是為了給您一個快速修復,請嘗試執行以下操作:
In [1]: import urllib.request
In [2]: down_link = "http://vignette3.wikia.nocookie.net/shipoffools/images/4/42/Surprised_Luffy.jpg/revision/latest?cb=20120921134043"
In [3]: path_to_save = "../luffy.jpg"
In [4]: urllib.request.urlretrieve(down_link, path_to_save)
Out[4]: ('../luffy.jpg', <http.client.HTTPMessage at 0x47f6af0>)
這樣就可以正常工作,將圖像保存在所需位置。 如果您不指定path_to_save,那么也可以,因為它仍然會下載,並且路徑將是tmp
目錄,在您的情況下,它將是C:\\\\Users\\\\rakesh.j.kulkarni\\\\AppData\\\\Local\\\\Temp\\\\
文件夾。
如果發生與https
相關的錯誤或其他任何問題,可以通過使用urlopen
讀取文件並將其保存在計算機上的文件中來實現,這是一種更清潔的方法:
In [5]: import urllib.request as req
In [6]: down_link = "https://vignette3.wikia.nocookie.net/shipoffools/images/4/42/
...: Surprised_Luffy.jpg/revision/latest?cb=20120921134043"
In [7]: fname = "../luffy.jpg"
In [8]: with req.urlopen(down_link) as d, open(fname, "wb") as opfile:
...: data = d.read()
...: opfile.write(data)
...:
注意 :此方法可能會花費一些時間,但對於普通的小文件來說效果很好。
subprocess
在瀏覽器中打開鏈接實際上不是動態代碼,因為您需要指定瀏覽器的路徑,而可以使用預先存在的模塊webbrowser
,它將自動檢測系統中的默認瀏覽器並打開URL。
import webbrowser url = ... webbrowser.open(url, autoraise=True) # normal webbrowser.open_new(url) # new window webbrowser.open_new_tab(url) # new tab
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.