当前位置: 首页 > news >正文

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

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

爬取的flash服务如下:

from flask import Flask
import timeapp = 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 aiohttpstart = 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)

相关文章:

  • DeepSORT(目标跟踪算法) 卡尔曼滤波的完整流程
  • 【Android】怎么使APP进行开机启动
  • Web前端项目-交互式3D魔方【附源码】
  • yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(cpp版)
  • 报表开发工具DevExpress Reporting v23.2 - 增强PDF导出、多平台打印等
  • [创业之路-118] :制造业企业的必备管理神器-ERP-制造业的基本方程式与ERP的发展历程,哪些企业需要ERP?
  • 手机网站制作软件是哪些
  • 【Java】已解决Java中的java.lang.VerifyError异常
  • 数学建模基础:数学建模概述
  • 手机usb共享网络电脑没反应的方法
  • 【Qt6.3 基础教程 04】探索Qt项目结构和配置文件
  • 简易开发一个app
  • 什么是进程
  • 使用QMainWindow、QMenuBar,QToolBar文本编辑器界面布局设置
  • 深入解析JVM之类的生命周期
  • Android框架之Volley
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Druid 在有赞的实践
  • E-HPC支持多队列管理和自动伸缩
  • Git 使用集
  • HTTP--网络协议分层,http历史(二)
  • LeetCode算法系列_0891_子序列宽度之和
  • Nacos系列:Nacos的Java SDK使用
  • Objective-C 中关联引用的概念
  • SpingCloudBus整合RabbitMQ
  • spring boot下thymeleaf全局静态变量配置
  • Terraform入门 - 1. 安装Terraform
  • 产品三维模型在线预览
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 手写一个CommonJS打包工具(一)
  • 突破自己的技术思维
  • 一个完整Java Web项目背后的密码
  • 移动端唤起键盘时取消position:fixed定位
  • 用简单代码看卷积组块发展
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Python 之网络式编程
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #{} 和 ${}区别
  • #define,static,const,三种常量的区别
  • #QT(QCharts绘制曲线)
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (八)Flink Join 连接
  • (多级缓存)缓存同步
  • (二)c52学习之旅-简单了解单片机
  • (二十四)Flask之flask-session组件
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (一)Docker基本介绍
  • (一)Linux+Windows下安装ffmpeg