2017-09-26 179 views
0

tl; dr我想要從服務器上下載一個文件,只允許某些User-Agents。我設法用下面的代碼獲取站點中的200 OK如何使用urlopen()在Python3中下載文件或將自定義標頭添加到urlretrieve()?

opener = urllib.request.build_opener() 
opener.addheaders = [('User-Agent', 'Interwebs Exploiter 4')] 
opener.open(url) 

由於文件可以是.pdf或.zip或其他格式,我想下載它,而不解析或讀取它。 Urlretrieve()似乎是一個好主意,但它使用默認標題,這使服務器返回403 Forbidden

如何通過使用該定製打開器來下載文件,或者只需將標題添加到urlretrieve()

this example在Python Docs中對我來說是完全的廢話。

回答

1

我會用requests爲:

import requests 

headers = {'User-Agent': 'Interwebs Exploiter 4'} 

r = requests.get(url, allow_redirects=True, headers=headers) 
    with open(filename, 'wb') as f: 
     for chunk in r.iter_content(1024): 
      f.write(chunk) 

除非它是絕對必要的因爲某些原因使用urllib

+0

做它無需安裝額外的依賴的方法嗎? – stendarr

相關問題