爬虫进阶-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-12-22程序员出海做 AI 工具:如何用 similarweb 找到最佳流量渠道?
- 2024-12-20自建AI入门:生成模型介绍——GAN和VAE浅析
- 2024-12-20游戏引擎的进化史——从手工编码到超真实画面和人工智能
- 2024-12-20利用大型语言模型构建文本中的知识图谱:从文本到结构化数据的转换指南
- 2024-12-20揭秘百年人工智能:从深度学习到可解释AI
- 2024-12-20复杂RAG(检索增强生成)的入门介绍
- 2024-12-20基于大型语言模型的积木堆叠任务研究
- 2024-12-20从原型到生产:提升大型语言模型准确性的实战经验
- 2024-12-20啥是大模型1
- 2024-12-20英特尔的 Lunar Lake 计划:一场未竟的承诺