上一篇写到了异步爬虫的操作,但是由于requests模块是同步模块会中止异步操作,所以这里要引入aiohttp。
首先是要在终端内输入
pip install aiohttp
接着就是导包,这些是这次要用到的包
代码语言:javascript复制import asyncio
import time
import aiohttp
接下来的操作和之前的模拟异步操作没什么区别,唯一不同的地方就是在发请求的地方。
代码语言:javascript复制import asyncio
import time
import aiohttp
print(time.strftime("%X"))
urls = [
"http://127.0.0.1:5000/bobo", "http://127.0.0.1:5000/coco", "http://127.0.0.1:5000/moly"
]
async def get_page(url):
async with aiohttp.ClientSession() as session:
#参数:(url,headers,params/data,proxy="字符串") post请求同理
async with await session.get(url) as response:
# text()返回字符串形式的响应数据
# read()返回二进制形式的响应数据
# json()返回的是JSON形式的响应数据
# 注意:在获取响应数据之前一定要使用await手动挂起
page_text = await response.text()
print(page_text)
print(url, "下载完成")
tasks = []
for url in urls:
task = get_page(url)
tasks.append(task)
async def main():
await asyncio.wait(tasks)
if __name__ == '__main__':
asyncio.run(main())
print(time.strftime("%X"))
运行结果:
总共耗时2秒。