爬虫进阶-aiohttp异步模块
2021/12/12 23:19:55
本文主要是介绍爬虫进阶-aiohttp异步模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
异步介绍:
异步
:当一个程序进入I\O时,程序不会一直等待,而是去处理其他工作- 基本
协程
&异步
的爬虫结构:
async def xxx(): pass async def main(): pass if __name__ == '__main__': asyncio.run(mian())
aiohttp
简述:
requests.get()
是同步的代码,而aiohttp
则是强大的异步爬虫asyncio
实现了TCP、UDP、SSL
等协议,aiohttp
则是基于asyncio
实现的HTTP
框架。
aiohttp
使用:
- 导入模块:
import aiohttp
x = aiohttp.ClientSession()
<==>requests
模块requests.get()
<==>x.get()
requests.post()
<==>x.post()
async with aiohttp.ClientSession() as xxx
:- 使用
async
,实现异步操作 - 使用
with
,可以在执行完毕后自动关闭
- 使用
async with xxx.get(url) as res
:- 利用协程get访问链接
res.content.read()
<==>res.content
res.text()
<==>res.text
- 实例:
# 异步协程爬虫练习 -- 异步下载图片 import asyncio import aiohttp urls = [ "http://kr.shanghai-jiuxin.com/file/2021/1104/d74a24d86d8b4a76ee39e90edaf99018.jpg", "http://kr.shanghai-jiuxin.com/file/2021/1104/d9a5dfe5771fcdd9ddb128f969d48956.jpg", "http://kr.shanghai-jiuxin.com/file/2020/0810/cf05e8310aceaa43a01530b84eebd380.jpg" ] async def aiodownload(link): # 发送请求 # 得到图片内容 # 保存到文件 name = link.rsplit("/",1)[1] async with aiohttp.ClientSession() as session: async with session.get(link) as res: with open('images/'+name, 'wb') as w: # 读取内容是异步的,需要await挂起 w.write(await res.content.read()) print(f"{name}下载完成") async def main(): tasks = [] for link in urls: tasks.append(aiodownload(link)) await asyncio.wait(tasks) asyncio.run(mian()) # await main() 丘比特(Jupyter)写法
这篇关于爬虫进阶-aiohttp异步模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-14让创意在幻觉中肆虐: 认识Illusion Diffusion AI
- 2024-05-08Sora从入门到入门-白话版1
- 2024-05-082024年github开源top100中文
- 2024-05-083、最大池化maxinmum pooling
- 2024-05-08动态规划基础思想
- 2024-05-08Kimi:文本解析利器,你相信光么?
- 2024-05-08在Windows电脑上快速运行AI大语言模型-Llama3
- 2024-05-08MoneyPrinterTurbo:一键生成短视频的AI神器
- 2024-05-08阶跃星辰:探索智能科技的星辰大海
- 2024-05-08一分钟部署 Llama3 中文大模型,没别的,就是快