urllib3简介

urllib3简介

编辑时间:2021-07-02

目录
  • 创建一个简单的请求
  • 响应内容
  • 请求数据
    • 自定义Headers
    • 请求参数
    • 表单数据
    • JSON
    • 文件和二进制数据

创建一个简单的请求

1、导入urllib3,实例化PoolManager

>>> import urllib3
>>> http = urllib3.PoolManager()

2、使用request()方法请求URL资源,如果请求成功,会返回一个HTTPResponse对象:

>>> r = http.request('GET', 'http://httpbin.org/robots.txt')
>>> r.data
b'User-agent: *\nDisallow: /deny\n'

响应内容

HTTPResponse对象属性有:status,data,headers

>>> r = http.request('GET', 'http://httpbin.org/ip')
>>> r.status
200
>>> r.data
b'{\n  "origin": "218.108.16.44"\n}\n'
>>> r.headers
HTTPHeaderDict({'Date': 'Fri, 02 Jul 2021 09:09:42 GMT', 'Content-Type': 'application/json', 'Content-Length': '32', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'})

请求数据

自定义Headers

>>> r = http.request(
...     'GET',
...     'http://httpbin.org/headers',
...     headers={
...         'X-Something': 'this is header content'
...     }
... )
>>> json.loads(r.data.decode('utf-8'))['headers']
{'Accept-Encoding': 'identity',
 'Host': 'httpbin.org',
 'User-Agent': 'python-urllib3/1.26.5',
 'X-Amzn-Trace-Id': 'Root=1-60deda71-54e886506a2520751a6d2866',
 'X-Something': 'this is header content'}

请求参数

对于GET,HEAD,DELTE请求,可以将参数直接放在fileds字典中传给requests()

>>> r = http.request(
...     'GET',
...     'http://httpbin.org/get',
...     fields={'username': '张三'}
... )
>>> json.loads(r.data.decode('utf-8'))['args']
{'username': '张三'}

对于POST,PUT请求,则需要手动将请求参数在URL中编码序列化

>>> from urllib.parse import urlencode
>>> encoded_args = urlencode({'arg': 'value'})
>>> url = 'http://httpbin.org/post?' + encoded_args
>>> r = http.request('POST', url)
>>> json.loads(r.data.decode('utf-8'))['args']
{'arg': 'value'}

表单数据

对于PUTPOST请求,可以将表单数据直接放进fileds字典中传给requests()

>>> r = http.request(
...     'POST',
...     'http://httpbin.org/post',
...     fields={'field': 'value'}
... )
>>> json.loads(r.data.decode('utf-8'))['form']
{'field': 'value'}

JSON

>>> import json
>>> data = {'attribute': 'value'}
>>> encoded_data = json.dumps(data).encode('utf-8')
>>> r = http.request(
...     'POST',
...     'http://httpbin.org/post',
...     body=encoded_data,
...     headers={'Content-Type': 'application/json'}
... )
>>> json.loads(r.data.decode('utf-8'))['json']
{'attribute': 'value'}

文件和二进制数据

内容篇幅较多,请参考官方文档


参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值