2017-09-26 173 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

相关问题