如何使用urlopen()下载Python3中的文件或向urlretrieve()添加自定义标头?

2024-05-23 16:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个只允许某些^ {< CD1>}的服务器下载文件。通过使用以下代码,我成功地从站点获取了一个200 OK

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

由于文件可以是.pdf或.zip或其他格式,所以我想下载它而不必解析或读取它。Urlretrieve()似乎是个好主意,但是它使用默认的头,这使得服务器返回一个403 Forbidden。在

我怎样才能使用定制的打开器下载文件,或者简单地将头添加到urlretrieve()?在

Python文档中的this example对我来说完全是胡言乱语。在


Tags: 文件代码build服务器站点requestokopener
1条回答
网友
1楼 · 发布于 2024-05-23 16:10:04

我将使用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

相关问题 更多 >