Python爬虫-请求模块urllib3

Python爬虫-请求模块urllib3

urllib3是一个功能强大、条理清晰,用于HTTP 客户端的第三方模块,许多Python 的原生系统已经开始使用 urllib3。urllib3 提供了很多 Python 标准库里所没有的重要特性:
线程安全。
连接池。
客户端SSL/TLS验证。
使用 multipart编码上传文件。
Helpers用于重试请求并处理HTTP重定向。
支持gzip 和 deflate编码。
支持HTTP 和SOCKS 代理。
100%的测试覆盖率。
使用 urllib3 模块发送网络请求时,首先需要创建PoolManager对象,通过该对象调用request()方法来实现网络请求的发送。request()方法的语法格式如下:

request (method, url, fields = None, headers = None, urlopen_kw )

method:必选参数,用于指定请求方式,如GET、POST、PUT等。
url:必选参数,用于设置需要请求的URL地址。
fields:可选参数,用于设置请求参数。
headers:可选参数,用于设置请求头。
使用request()方法实现 GET请求

import urllib3    # 导入urllib3模块
url = "http://httpbin.org/get"
http = urllib3.PoolManager()   # 创建连接池管理对象
r = http.request('GET',url)    # 发送GET请求
print(r.status)                # 打印请求状态码

运行:

200

使用PoolManager对象向多个服务器发送请求
一个PoolManager对象就是一个连接池管理对象,通过该对象可以实现向多个服务器发送请求。示例代码如下:

import urllib3    # 导入urllib3模块
urllib3.disable_warnings()               # 关闭ssl警告
jingdong_url = 'https://www.jd.com/'     # 京东url地址
python_url = 'https://www.python.org/'   # Python url地址
baidu_url = 'https://www.baidu.com/'     # 百度url地址
http = urllib3.PoolManager()             # 创建连接池管理对象
r1 = http.request('GET',jingdong_url)    # 向京东地址发送GET请求
r2 = http.request('GET',python_url)      # 向python地址发送GET请求
r3 = http.request('GET',baidu_url)       # 向百度地址发送GET请求
print('京东请求状态码:',r1.status)
print('python请求状态码:',r2.status)
print('百度请求状态码:',r3.status)

运行:

京东请求状态码: 200
python请求状态码: 200
百度请求状态码: 200

使用request()方法实现POST请求
使用urllib3 模块向服务器发送 POST 请求时并不复杂,与发送GET 请求相似,只是需要在 request()
方法中将 method参数设置为“POST”,然后将 fields参数设置为字典类型的表单参数。示例代码如下:

import urllib3    # 导入urllib3模块
urllib3.disable_warnings()               # 关闭ssl警告
url = 'https://www.httpbin.org/post'    # post请求测试地址
params = {
   
   'name':'Jack','country':'中国','age':30}  # 定义字典类型的请求参数
http = urllib3.PoolManager()             # 创建连接池管理对象
r = http.request('POST',url,fields=params)    # 发送POST请求
print('返回结果:',r.data.decode('utf-8'))

运行:

返回结果: {
   
   
  "args": {
   
   }, 
  "data"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值