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()

 

posted @ 2021-12-13 08:59  remix_alone  阅读(566)  评论(0)    收藏  举报