Python HTTP库 urllib之 Request 用法

利用urlopen方法可以发起最基本的请求,但urlopen的几个简单参数并不足以构建一个完整的请求。如果需要往请求中加入Headers等信息,就得利用更强大的 Request 类来构建请求了。

import urllib.request
request = urllib.request.Request('https://python.org') # 构造 Request 对象
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

通过参数构造 Request 类, Request 类构造方法

class urllib.request.Request(url, data=None, headers={},
      origin_req_host=None, unverifiable=False, method=None)
  • 第一个参数ur1用于请求URL,这是必传参数,其他的都是可选参数。

  • 第二个参数data如果要传数据,必须传bytes类型的。如果数据是字典,可以先用urllib.parse模块里的urlencode方法进行编码

  • 第三个参数headers是一个字典,这就是请求头,我们在构造请求时,既可以通过 headers参数直接构造此项,也可以通过调用请求实例的 add header 方法添加。添加请求头最常见的方法就是通过修改 User-Apent 来伪装浏览器。默认的 User-Agent 是Python-urlib,我们可以通过修改这个值来伪装浏览器例如要伪装火狐浏览器就可以把User-Agent设置为:

Mozi1la/5.0(X11; U; Linux 686) Gecko/20071127 Firefox/2.0.0.11

  • 第四个参数originreq host指的是请求方的host名称或者IP地址。

  • 第五个参数unverifiable 表示请求是否是无法验证的,默认取值是 False,意思是用户没有足够的权限来接收这个请求的结果。例如,请求一个HTML 文档中的图片,但是没有自动抓取图像的权限,这时unverifiable的值就是True。

  • 第六个参数method是一个字符串,用来指示请求使用的方法,例如GETPOST和PUT等

通过传入参数构造 Request 类

from urllib import request, parse
url = 'https://www.httpbin.org/post'
headers = {
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT',
    'Host':'www.httpbin.org'
}
dict = {'name':'germey'}
data = bytes(parse.urlencode(dict), encoding='utf-8')
req = request.Request(url,data=data,headers=headers,method='POST')
response = request.urlopen(req)
print(response.read().decode('utf-8'))

运行结果如下:

7c512118f3a13d41236dee929d42488e.png

通过 add_header 方法添加 headers 的方法如下:

req = request.Request(url=url,data=data,method='POST')
req.add_header('User-Agent','Mozilla/4.0 (Compatible; MSIE 5.5; Windows NT)')

后续公众号会发布系列教程,更多内容请关注公众号:程序猿学习日记 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值