python爬虫之aiohttp多任务异步爬虫

python爬虫之aiohttp多任务异步爬虫

爬取的flash服务如下:

复制代码
from flask import Flask
import time

app = Flask(__name__)


@app.route('/bobo')
def index_bobo():
    time.sleep(2)
    return 'Hello bobo'

@app.route('/jay')
def index_jay():
    time.sleep(2)
    return 'Hello jay'

@app.route('/tom')
def index_tom():
    time.sleep(2)
    return 'Hello tom'

if __name__ == '__main__':
    app.run(threaded=True)

运行启动flask服务后,多任务爬取代码如下:

复制代码
#环境安装:pip install aiohttp
#使用该模块中的ClientSession
import requests
import asyncio
import time
import aiohttp

start = time.time()
urls = [
    'http://127.0.0.1:5000/bobo','http://127.0.0.1:5000/jay','http://127.0.0.1:5000/tom'
]

async def get_page(url):
    async with aiohttp.ClientSession() as session:
        #get()、post():
        #headers,params/data,proxy='http://ip:port'
        async with await session.get(url) as response:
            #text()返回字符串形式的响应数据
            #read()返回二进制形式的响应数据
            #json()返回的就是json对象
            #注意:获取响应数据操作之前一定要使用await进行手动挂起
            page_text = await response.text()
            print(page_text)

tasks = []

for url in urls:
    c = get_page(url)
    task = asyncio.ensure_future(c)
    tasks.append(task)

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

end = time.time()

print('总耗时:',end-start)
相关推荐
码云数智-大飞2 分钟前
PHP 接口开发规范:统一返回格式、异常处理与参数校验
开发语言·php
浮江雾24 分钟前
Flutter第十七节-----路由管理(3)
android·开发语言·前端·javascript·flutter·入门
林泽毅26 分钟前
PyTRIO快速入门(一):概念、推理与训练
人工智能·python·深度学习·机器学习·语言模型
admin and root30 分钟前
「移动安全」安卓APP 反编译&frida脱壳技巧分享
android·开发语言·python·web安全·微信小程序·移动安全·攻防演练
踏月的造梦星球36 分钟前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
An_s37 分钟前
c++对接pdfium(一)win系统篇
开发语言·c++
Zwarwolf44 分钟前
Rust零散知识点项目汇总
开发语言·rust
-银雾鸢尾-1 小时前
C#中HashTable相关方法
开发语言·c#
茯苓gao1 小时前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习
ihuyigui1 小时前
海外签收通知短信接口
android·java·开发语言·前端·数据库·后端