python访问网站添加请求头_python request.urlretrieve的使用 如何添加请求头

python3 request.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")

在urllib.request.urlretrieve()使用内部urllib.request.urlopen()(至少在Python 3)。因此,您可以使用相同的方式来影响的行为urlopen。

当urlopen(params)被调用时,它实际上首先查看特殊的全局变量urllib.request._opener,如果是,None则urlopen使用默认的打开程序集来设置该变量,否则它将保留它。在下一步中,它将调用urllib.request._opener.open()(在下一部分中,我urllib.request._opener仅称为opener)。

在opener.open()包含处理程序不同协议的列表。当opener.open()被称为那么它会做的动作:

从URL urllib.request.Request对象创建(或者,如果您直接提供,Request它将使用它)。

从Request对象中提取协议(从URL方案推导得出)。

根据协议,它将尝试查找并使用以下方法:

protocol_request(例如http_request)-它用于在打开连接之前对请求进行预处理。

protocol_open -实际上与远程服务器建立连接

protocol_response -处理来自服务器的响应

有关其他方法,请参阅Python的文档

对于您自己的opener,您必须执行以下三个步骤:

创建自己的处理程序

处理程序的生成列表包含您的自定义处理程序(函数urllib.request.build_opener)

将新的opener安装到urllib.request._opener(功能urllib.request.install_opener)中

对于您自己的开场白,您必须执行以下3个步骤:

这个urllib.request.build_opener创建包含自定义处理程序的打开程序,并添加默认的打开程序,但自定义处理程序继承的处理程序除外。

b0c362a14e62cc3f1ef84d0ee17e9773.png

本博客源码Github地址:

请随手给个star,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值