异步爬虫aiohttp使用
📅 2026/7/29 12:23:15
👁️ 次浏览
目录一、背景二、应用场景三、备注一、背景最近有个爬虫需求页面是一个下拉框一个查询按钮但是下拉框里有大概七八百多个选项需求是要尽可能快的爬下来所有选项的数据。问了下AI给出了aiohttp来做异步并发请求之前也是没有用过所以本文记录一下aiohttp使用方法。二、应用场景因为我们这个属于一个爬虫项目框架任务的调度使用的aps管理任务通过数据库查询得到之前都是同步任务运行但这个aiohttp是异步的函数功能所以是要在任务里额外创建一个异步时间循环来运行异步任务。def task(task_idNone, station_idNone, collect_dateNone, province_codeNone): 被aps定时任务查询根据映射执行的具体任务入口 # 创建独立的事件循环 loop asyncio.new_event_loop() asyncio.set_event_loop(loop) try: results loop.run_until_complete(async_crawl_flow()) return results finally: loop.close() class Crawler: ...... _sem asyncio.Semaphore(10) # 控制并发数 async def async_crawl_flow(self): 异步主流程 1. 获取下拉列表拿到所有节点ID 2. 并发查询每个节点详情 timeout ClientTimeout(total30) # aitohttp接受的proxy跟request有区别是一个字符串 proxy_str self.proxy.get(http) or self.proxy.get(https) async with aiohttp.ClientSession( timeouttimeout, headersself.headers, cookiesself.cookie, proxyproxy_str ) as session: print(开始获取下拉列表...) node_list await self._fetch_node_list(session) if not node_list: print(未获取到节点列表流程终止) return [] print(f获取到 {len(node_list)} 个节点ID) print(开始并发查询节点详情...) results await self._fetch_all_details(session, node_list) print(f查询完成成功 {len(results)} 条) return results # # 第一步获取下拉列表 # async def _fetch_node_list(self, session: aiohttp.ClientSession) - list[dict]: 调用下拉列表接口提取所有节点ID try: async with session.post( https://xxx.com, json{} ) as resp: data await resp.json() node_list data.get(data, []) return node_list except Exception as e: print(f获取下拉列表失败: {e}) return [] # # 第二步并发查询详情 # async def _fetch_all_details(self, session: aiohttp.ClientSession, node_list: list[dict]) - dict: 查询所有节点的详情 results [] async def fetch_one_detail(node_info: dict): 查询单个节点详情 id node_info.get(id) name node_info.get(name) async with self._sem: try: async with session.post( https://xxx.com, json{ phyunitId: id, dataTime: self.collect_date, }, timeoutClientTimeout(total10), ) as resp: if resp.status 200: detail_data await resp.json() results[id] detail_data print(f节点 {name} 查询成功) else: print(f节点 {name} 返回状态码: {resp.status}) except asyncio.TimeoutError: print(f节点 {name} 超时) # 创建所有任务并发执行 tasks [fetch_one_detail(nl) for nl in node_list] await asyncio.gather(*tasks, return_exceptionsTrue) return results三、备注异步并发会同时向目标服务器发送n个请求过去注意控制好信号量一般建议在10-30之间左右有些网站会有限流、频繁请求检测等这种情况下并发的请求大部分都拿不到数据需要降低并发量、增加失败重试等机制。
Invicti专业 Web 应用程序安全扫描器
自动、极其准确且易于使用的 Web 应用程序安全扫描程序,可自动查找网站、Web 应用程序和 Web 服务中的安全。
请访问原文链接:WEB扫描器Invicti-Professional-V26.70.0查看最新版。原创作品,官方地址&a…
📅 2026/7/29 12:22:14
1. 项目概述与核心价值 最近在折腾一块带屏幕的开发板,手头正好有基于乐鑫ESP32-S3的K10模组,官方提供了不错的固件支持。我就在想,能不能用MicroPython这种对开发者更友好的语言,在这块屏幕上把图片显示出来?毕竟&…
📅 2026/7/29 12:22:14
1. 项目概述:ysyx环境下移植RT-Thread的意义与挑战在嵌入式系统开发领域,RT-Thread作为一款开源实时操作系统(RTOS)正在获得越来越多的关注。最近我在ysyx(一生一芯)项目开发板上完成了RT-Thread的移植工作,这个过程既…
📅 2026/7/29 12:22:14
开头结论本文分析 AI 八字类决策陪伴工具的行业痛点,给出可落地的选型标准与参考方案,并以哩里等产品的实践作为具体参考案例。一、什么是 AI 八字类决策陪伴工具AI 八字类决策陪伴工具是结合传统命理逻辑与 AI 技术,以八字命盘分析为基础&am…
📅 2026/7/29 13:18:20
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快Selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说…
📅 2026/7/29 13:18:20
3分钟在Windows上安装Android应用的终极指南:APK Installer完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer
想在Windows电脑上运行Android应用却不…
📅 2026/7/29 13:18:20
HTTrack网站镜像工具:三步实现网站完整本地化备份 【免费下载链接】httrack HTTrack Website Copier, copy websites to your computer (Official repository) 项目地址: https://gitcode.com/gh_mirrors/ht/httrack
网站内容随时可能消失或变更,…
📅 2026/7/29 13:18:20
很多.NET开发者聊到AI、机器学习,第一反应就是「那是Python的活」。想给自己的系统加个预测功能,要么找算法团队对接接口,要么自己硬啃Python环境,跨语言调用、依赖冲突、部署维护全是麻烦事。
其实微软早就给.NET生态补上了这块拼…
📅 2026/7/29 13:18:20
做生物信息分析的朋友,估计都经历过对着GEO数据库发呆的时刻。特别是刚入门的时候,下载完表达矩阵,看着那一堆密密麻麻的数字,心里往往没底。这时候,GEO2R这个在线工具就成了救命稻草。但很多新手卡在第一步:geo2r怎么定义组?这看似简单,其实里面全是坑。记得去年帮一个…
📅 2026/7/29 13:16:50
解密Seq的核心功能:如何利用Pipeline实现高效基因组数据处理 【免费下载链接】seq A high-performance, Pythonic language for bioinformatics 项目地址: https://gitcode.com/gh_mirrors/se/seq
Seq作为一款高性能的生物信息学专用语言,其Pipel…
📅 2026/7/29 0:00:00
Flask-Blogging插件开发指南:打造属于你的个性化博客功能 【免费下载链接】Flask-Blogging A Markdown Based Python Blog Engine as a Flask Extension. 项目地址: https://gitcode.com/gh_mirrors/fl/Flask-Blogging
Flask-Blogging是一个基于Markdown的Py…
📅 2026/7/29 0:00:00
近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…
📅 2026/7/29 0:01:00
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/29 1:14:44
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/29 1:14:44
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/29 1:14:46
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/29 7:15:11
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/28 17:14:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/29 5:15:05