100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 爬虫之异步爬虫asyncio

爬虫之异步爬虫asyncio

时间:2024-02-20 18:27:00

相关推荐

爬虫之异步爬虫asyncio

与异步爬虫的相见

文章目录

一、asynico是什么?二、使用步骤 1.普通用法2,在爬虫里面的用法

一、asynico是什么?

简言之,就是用这个库可以来实现异步IO

二、使用步骤

1,普通用法

1,下面我们来看一个案例:

import asyncioasync def sex(x):print(x)name=sex('男生')print(name) #打印出来为一个协程对象,而不是像以前一样打印内容(先不执行)print('上面是一个协程对象')#看英文意思我们就可以知道,get_event_loop得到一个事 件循环,也即所有含async的等待列表loop=asyncio.get_event_loop()#下面这个意思就是逐步执行loop里面所等待的内容 ,sex函数也在事件循环里面,所以下面才会执行 loop.run_until_complete(name)

#asynico.run(name)这个是等价于上面两行的

打印结果如下:

2,在爬虫里面的用法

asynico模块就是支持异步IO的,是在Python3.4之后才有的模块,功能相当强大,但是目前它不支持发送http请求,只支持tcp请求,如果要发送http请求,就要自己再tcp基础之上封装自己的http请求,当然这啃不动不用我们自己写啊,谁叫我们用了Python呢,早就有人为我们封装了这个模块,那就是aiohttp,我们直接用就好了。

这告诉我们----要想异步url,需要使用aiohttp

代码如下:

import time,asyncio,aiohttp #导入库start=time.time()async def get_url(url):session=aiohttp.ClientSession() #确定clien对象res=await session.get(url) #异步等待await res.text()await session.close()return resasync def request():url='/delay/5' #该网站爬取十次不用异步需要六十秒res=await get_url(url)tasks=[asyncio.ensure_future(request()) for i in range(10)] #列表解析式loop=asyncio.get_event_loop()loop.run_until_complete(asyncio.wait(tasks))end=time.time()print(end-start)

下面是运行结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。