python爬虫学习25
目录
-
- python爬虫学习25
-
- 四、httpx库
-
- 4-4 client 对象
- 4-5 支持HTTP/2.0
- 4-6 支持异步请求
四、httpx库
接着昨天的进度继续:
【python|python爬虫学习25】上半部分的传送门
4-4 client 对象 httpx中有一个client对象,对于他的使用我们可以类比requests库中的session:
# client 对象
import httpxwith httpx.Client() as cli:
resp = cli.get('https://www.httpbin.org/get')
print(resp)
运行结果:
文章图片
对于client 官方推荐的用法就是 with…as语句,但是我们也可以等价为下面:
# 等价为 ↓↓↓↓↓
import httpxclient = httpx.Client()
try:
resp = client.get('https://www.httpbin.org/get')
print(resp)
finally:
client.close()
运行结果:
文章图片
同时,在设置client对象时,还可以指定一些参数:
import httpxurl = 'http://www.httpbin.org/get'
headers = {'User-Agent': 'this is a user-agent'}
with httpx.Client(headers=headers) as client:
resp = client.get(url)
print(resp.json()['headers']['User-Agent'])
从网站返回的响应中,我们提取了设置的User-Agent字段,说明我们成功地赋值了headers属性:
文章图片
4-5 支持HTTP/2.0 对于httpx对http/2.0的支持,我们在4-3中已经涉及过了:
import httpx# 如果不设置http2字段 httpx库默认不会支持http2.0
client = httpx.Client(http2=True)
url1 = 'http://www.httpbin.org/get'
url2 = 'https://spa16.scrape.center/'
resp1 = client.get(url2)
print('resp1:', resp1.http_version)
resp2 = client.get(url1)
print('resp2:', resp2.http_version)
resp3 = httpx.get(url1)
print('resp3:', resp3.http_version)
运行结果:
文章图片
对比以上三组结果,我们也可以得到一个结论:在设置HTTP2.0以后,只有服务器端客户端要求使用HTTP2.0时,它才会使用HTTP2.0进行传输,否则一般情况下(网页使用HTTP1.1就可以得到相应)即使已经设置对2.0的支持,它依然会使用HTTP1.1进行传输。
4-6 支持异步请求 httpx还支持异步客户端请求,支持python的async请求模式:
# 支持异步请求:import httpx
import asyncioasync def fetch(url):
async with httpx.AsyncClient(http2=True) as cli:
resp = await cli.get(url)
print(resp.text)
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(fetch('http://www.httpbin.org/get'))
运行结果:
文章图片
啥叫异步请求?不知道,学到那里的时候或许就知道了吧
至此对于httpx学习完毕,未完待续
推荐阅读
- python|Debug system:无法显示数据
- Python艺术|用Python画双摆
- IRDM python
- 5g|任正非回应美国封杀(不要煽动民族情绪,不能狭隘认为爱华为就用华为手机...)
- java|那个每天半夜发加班朋友圈的程序员,你给我站住!
- 面试|Bug改到怀疑人生…… | 每日趣闻
- datawhale的可视化学习|datawhale可视化学习第六章 场景案例显神通
- PyQt5 批量删除 Excel 重复数据,多个文件、自定义重复项一键删除...
- 爬虫|python3 qq音乐爬取歌手名字,专辑,歌曲时间,播放链接