Pyhton——aioHttp
简介
aiohttp是支持异步请求的模块
方法:
aiohttp.ClientSession(cookies=)
参数:
cookies:自定义cookies
返回值:session
返回值意义;获取可发送get()和post()的会话对象
作用:获取可发送get()和post()的会话对象
注意:必须加上异步上下文管理器:async with aiohttp.ClientSession() as session:。这个固定写法
简介
session是aiohttp.ClientSession()返回会话对象,可以发get和post请求
方法
session.get(url, headers, params )
参数:
url:超链接
headers:请求头
params:请求参数
返回值:response
返回值意义:获取response对象
作用:用于获取response对象
注意:必须加上异步上下文管理器:async with session.get() as response:。这个固定写法
简介
response是session.get后的响应对象。可以凭此获取响应行,头,体
方法
response.content.read()
参数:无
返回值:字节数组
返回值意义:内容的字节
作用:读取内容的字节
注意:获取相应内容是耗时操作,应该await这个接口
reponse.text(encoding=)
参数:
encoding:设置编码集
返回值:string
返回值意义:获取响应体字符内容
作用:获取响应体的字符内容
注意:获取响应内容是耗时操作,应该await这个接口
response.json(encoding=)
参数
encoding:设置编码集
返回值:string
返回值意义:获取content-type为json的数据
作用:获取cotent-type为json的数据
注意:获取响应内容是耗时操作,应该await这个接口
9.获取当前访问网站的cookie
async with session.get(url) as resp:
print(resp.cookies)
11.查看响应头
resp.headers 来查看响应头,得到的值类型是一个dict:
resp.raw_headers 查看原生的响应头,字节类型
13.超时处理
默认的IO操作都有5分钟的响应时间 我们可以通过 timeout 进行重写:
async with session.get('https://github.com', timeout=60) as r:
博客:https://www.cnblogs.com/ssyfj/p/9222342.html#1.aiohttp%E7%9A%84%E7%AE%80%E5%8D%95%E4%BD%BF%E7%94%A8%E9%85%8D%E5%90%88asyncio%E6%A8%A1%E5%9D%97
使用
# 爬取优美图片的异步三张图片
import aiohttp import asyncio async def paqu(url): headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36' } async with aiohttp.ClientSession() as session: async with session.get(url,headers=headers) as response : with open(url.rsplit('/',1)[1],mode="wb") as f_write: f_write.write(await response.content.read()) def main(): urls = [ "https://kr.shanghai-jiuxin.com/file/2021/1209/d84bed5a5630c78a22f7a620691ab02a.jpg", 'http://kr.shanghai-jiuxin.com/file/mm/20210503/odgghbggcmi.jpg', 'http://kr.shanghai-jiuxin.com/file/2021/1129/823182202377cd726b7de713d5d72430.jpg' ] loop = asyncio.get_event_loop() task = [] for item in urls: task.append(loop.create_task(paqu(item))) loop.run_until_complete(asyncio.wait(task)) if __name__ == '__main__': main()

浙公网安备 33010602011771号