爬虫进阶-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-11-15Tailwind开发入门教程:从零开始搭建第一个项目
- 2024-11-14Emotion教程:新手入门必备指南
- 2024-11-14音频生成的秘密武器:扩散模型在音乐创作中的应用
- 2024-11-14从数据科学家到AI开发者:2023年构建生成式AI网站应用的经验谈
- 2024-11-14基于AI的智能调试助手创业点子:用代码样例打造你的调试神器!
- 2024-11-14受控组件学习:从入门到初步掌握
- 2024-11-14Emotion学习入门指南
- 2024-11-14Emotion学习入门指南
- 2024-11-14获取参数学习:初学者指南
- 2024-11-14受控组件学习:从入门到实践