我试图用urlretrieve检索一个文件,同时添加一个自定义头.

在判断urllib.request的代码源时,我意识到urlopen可以在参数中使用Request对象,而不仅仅是字符串,这样就可以放置我想要的头.

我最终做的是重写我自己的urlretrieve,删除抛出错误的行(该行在我的用例中无关紧要).

It works fine但我想知道是否有better/cleaner种方法可以做到这一点,而不是重写我自己的urlretrieve.如果可以将自定义标题传递到urlopen,感觉应该可以对urlretrieve执行相同的操作?

推荐答案

我找到了一种只需添加几行额外代码的方法...

import urllib.request

opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve("type URL here", "path/file_name")

如果您想了解详细信息,可以参考python文档:https://docs.python.org/3/library/urllib.request.html

Python-3.x相关问答推荐

如何在Django中创建两个不同权限的用户?

网站抓取:当我使用Chrome DevTools中的网络选项卡时,找不到正确的URL来提供我想要的数据

按小时和日期对Pandas 数据帧进行分组

逐行比较2个Pandas数据帧,并对每一行执行计算

在特定条件下从 DataFrame 中提取特定组

如何通过 python 使用 auth no priv 获取 SNMPv3?

Django - ValueError:无法将字符串转换为浮点数:''

Pandas DataFrame:使用 Pandas 将 NaN 值替换为 3 行以上的平均值

matplotlib.pyplot 多边形,具有相同的纵横比和紧凑的布局

以编程方式映射 uniprot ID 时如何解决 400 客户端错误?

如何融化具有自定义名称的Pandas

排队多个子进程

两个Pandas数据框中的共同列列表

multiprocessing.Queue 中的 ctx 参数

IronPython 3 支持?

ImportError:无法导入名称cross_validate

从大字典中弹出 N 项的最快方法

调用 Python doctest 时如何启用省略号?

使用 Python 3 读取 CSV 文件

print(... sep='', '\t' ) 是什么意思?