个自动化互联网的 Python 库,最后一个太离谱

发布时间:2026/8/25 15:45:22

个自动化互联网的 Python 库,最后一个太离谱
200 的接口, 并不等同于页面切实可用。爬虫运行完毕, 也并不意味着数据就是正确的。我所见识到的最为糟糕的一回, 乃是脚本每日凌晨抓取页面, 日志全然显示为绿色, 然而最终抓取竟持续三天都是登录页面。针对这种活儿, 千万别一开始就。要是能用HTTP搞定的, 就别去开启浏览器倘若能解析HTML就行的, 那就别通过截图识别一旦真的碰到反爬、登录以及动态渲染之类的情况, 再将浏览器请出来用。第一个还是 。它样子不繁杂花哨, 然而质地够坚硬。其内部存在后台, 还有老接口, 以及简单的表单提交事宜, 运用它最为省事便捷。import requests s requests.Session s.headers.update({ User-Agent: ops-checker/1.0, X-Trace-From: night-job }) resp s.get(https://example.com/api/status, timeout5) resp.raise_for_status data resp.json if data.get(state) ! ok: raise RuntimeError(f状态不对: {data})我通常借助它来撰写巡检脚本, 千万别小瞧, 对于线上脚本而言, 最令人担忧的并非失败, 而是出现卡死状况, 卡在那儿毫无报错信息, 待次日你查看日志时或许仍然觉得一切无异。第二个是 httpx 。它宛如的进阶版本, 具备同步支持能力, 同时也拥有异步支持能力。在进行批量探测操作、批量校验链接操作之际, 相较于而言更为便利。import httpx urls [ https://example.com, https://example.com/login, https://example.com/help ] with httpx.Client(timeout6, follow_redirectsTrue) as client: for url in urls: r client.get(url) print(url, r.status_code, len(r.text))在这里, 我会再多看一下 len(r.text)。存在一些页面, 其状态码为 200 , 然而内容仅仅只有几百字节, 大概八成是被网关、登录页以及错误模板给吞掉了。第三个是 。当进行批量请求多达上千个页面的操作时, 相较于一条条进行同步请求, 它所带来的感受会舒服许多。然而, 也千万不要随意开启并发, 因为你所面对的目标站点并非你自家的Redis, 若请求力度搞得太大, 就极易被封禁。import asyncio import aiohttp asyncdeffetch(session, url): try: asyncwith session.get(url, timeout8) as r: text await r.text return url, r.status, len(text) except Exception as e: return url, ERR, str(e) asyncdefmain: urls [fhttps://example.com/item/{i}for i in range(1, 50)] conn aiohttp.TCPConnector(limit10) asyncwith aiohttp.ClientSession(connectorconn) as session: for row inawait asyncio.gather(*(fetch(session, u) for u in urls)): print(row) asyncio.run(main)会被我保留的东西存在着limit10 , 并非要对所有自动化追求速度, 能够稳定跑完的自动化具备更高价值。第四个是 。在页面结构并非复杂的情形下, 顺势直接运用它去扒取字段。切莫只要一瞅见HTML, 便径行采用正则, 毕竟正则倘若用于解析HTML, 后续负责维护的人员是会对你予以斥责一番的。from bs4 import BeautifulSoup html open(page.html, encodingutf-8).read soup BeautifulSoup(html, html.parser) title soup.select_one(h1) price soup.select_one(.price) print({ title: title.get_text(stripTrue) if title else, price: price.get_text(stripTrue) if price else })我撰写这类脚本时, 宁可字段获取不到便空着, 也并非偏好一堆链式调用直接错乱。自动化脚本运行到半夜, 别期望有人守着屏幕挽救它。第五个是 。它借助 CSS 以及 XPath 来获取数据, 在编写爬虫之际, 相较于其他方式更为干脆利落, 特别是在页面层级较深的情形下。from parsel import Selector sel Selector(textopen(list.html, encodingutf-8).read) for item in sel.css(.goods-card): name item.css(.name::text).get(default).strip href item.css(a::attr(href)).get print(name, href)XPath并非是已过时的那种情况, 它仅仅是具备丑的特性。然而存在一些页面, CSS选择器需要花费很长时间来迂回探索, 可XPath却能够一下子直截了当地定位到那里。第六个是 。适用于正式些的数据采集任务的这个东西, 队列被它铺好了, 去重被它铺好了, 失败重试被它铺好了, 下载中间件也被它铺好了。其缺点挺明显, 项目结构在一开始是有点儿重的。第七个是 。动态页面, 前端渲染, 按钮点击, 登录态, 相较于其他, 它是更新的那类, 并且实际使用起来也会让人感觉更为顺畅顺手。from playwright.sync_api import sync_playwright with sync_playwright as p: browser p.chromium.launch(headlessTrue) page browser.new_page page.goto(https://example.com/login, wait_untilnetworkidle) page.fill(#username, robot) page.fill(#password, not-real-password) page.click(button[typesubmit]) page.wait_for_selector(.dashboard) print(page.title) browser.close在这里, 千万别迷信sleep, 要能等待可选择器就一定等待可选择器, 还要能等待网络处于空闲才等待网络变得空闲, time.sleep(3)当属脚本偶然发生失败时的老相识了。第八个是 。它岁数大, 然而众多公司的内网系统, 那些老旧的后台, 以及从IE时代迁移过来之后留存的事物, 实际上真的得依靠它。不要生出嫌弃之心, 只要能够开展工作便可以了。我对于 的看法极为简捷: 要是能够不使用那就不去应用倘若非得使用那便要将等候、截屏、失利日志补充完整。要不然在它出现失败状况之际, 仅仅会告知你有一个元素寻觅不到, 致使现场根本没办法根据已有信息回想, 重新进行分析。第九个-use这个就有点离谱了。放在前面的这些库, 是由你告知怎样去点、怎样去抓、怎样去解析的。它并非如此, 它是将浏览器交付给大模型, 让大模型自行去看页面、自行去点按钮、自行去完成任务的。大概是这种感觉from browser_use import Agent from langchain_openai import ChatOpenAI import asyncio asyncdefrun: agent Agent( task打开示例网站找到帮助中心里和退款相关的页面整理标题, llmChatOpenAI(modelgpt-4o-mini) ) result await agent.run print(result) asyncio.run(run)对于这东西, 我不会直接将其丢到生产环节, 因为它实在太不可控了, 只要页面一变, 或者弹窗一出, 又或者模型一抽风, 那么结果就极有可能出现偏差, 发生跑偏的情况。可是把它用于当作后台操作的原型, 用于替代低频的人工流程, 于测试一些重复的页面动作而言, 的确是有着一定特色的。以往编写定位器需要花费很长时间, 如今只需一句话就能让它自行点击了。虽说这事挺离谱得很, 然而方向也真就发生改变了。自动化互联网这事别被库带着跑。简单接口运用, 批量探测借助 httpx 或者, 静态页面采用、, 正式采集投入, 动态页面进而采用、, 最后那个 AI 控制浏览器, 暂且放置在实验田中, 不要匆忙投向生产。

相关新闻

STM32 SPI+DMA驱动WS2812B全彩灯带:3bit编码时序、CPOL/CPHA陷阱与颜色错乱根因实测

STM32 SPI+DMA驱动WS2812B全彩灯带:3bit编码时序、CPOL/CPHA陷阱与颜色错乱根因实测

2026/8/25 15:45:22

文章目录一、从一个"会闪但颜色全错"的灯带说起二、核心原理:把归零码"翻译"成 SPI 波形2.1 WS2812B 的单线归零码协议2.2 为什么 SPI 能模拟归零码2.3 设计决策:三种驱动方案怎么选三、硬件接线与 CubeMX 配置3.1 硬件接线3.2 时钟…

rocketMQ proxy 延迟队列

rocketMQ proxy 延迟队列

2026/8/25 15:45:22

Proxy 本身不做延迟队列的存储和调度 (那是 Broker 端 ScheduleMessageService / TimerMessageStore 的职责),Proxy 只负责 延迟消息的「发送端属性填充 延迟级别换算」以及消费端识别 。相关实现集中在 gRPC 发送链路和配置里。 发送端&…

【好靶场】PHP反序列化绕过

【好靶场】PHP反序列化绕过

2026/8/25 15:35:22

【好靶场】PHP反序列化绕过【好靶场】PHP反序列化绕过:__wakeup 绕过与命令执行前置知识一、题目源码二、正常 Payload 为什么会失败三、绕过思路四、验证命令执行1. 本地 PHP 7.3.4 检测结果2. 授权靶场页面回显五、字符串长度一定要写对六、查找 Flag七、漏洞原理…

【非标自动化】3、AutoShop快速理解(系统变量表)

【非标自动化】3、AutoShop快速理解(系统变量表)

2026/8/25 16:35:25

这些“系统变量表”不只是给你看的,它们本质上是 AutoShop 已经预先定义好的一批特殊变量,用来让程序访问 PLC 自身的状态、通信状态、模块状态和系统参数。可以先把变量分成两类:普通变量:由用户自己定义 系统变量:由…

【非标自动化】3、AutoShop快速理解(软件界面)

【非标自动化】3、AutoShop快速理解(软件界面)

2026/8/25 16:35:25

这张界面可以先不要把它看成“很多复杂菜单”,而要把它理解成一套完整的PLC工程工作台:先配置PLC和硬件↓ 定义变量和设备地址↓ 编写控制程序↓ 编译检查↓ 连接PLC并下载↓ 在线监控和调试↓ 排查故障、保存项目界面上的不同区域,就是分别服…

黑马苍穹外卖笔记day10

黑马苍穹外卖笔记day10

2026/8/25 16:35:25

订单状态定时处理、来单提醒和客户催单Spring Task:Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。应用场景特别广泛,只要是需要定制处理的场景都可以使用Spring Taskcron表达式:cron表达式…

【非标自动化】3、AutoShop快速理解(软件介绍)

【非标自动化】3、AutoShop快速理解(软件介绍)

2026/8/25 16:35:25

AutoShop是汇川面向小型PLC(Programmable Logic Controller,可编程逻辑控制 器)产品的编程组态软件,具有友好的编程和调试环境,拥有丰富、强大的通信和控 制功能。支持梯形图(LD)、顺序功能图&a…

Kotlin 语言【知识点整理2】

Kotlin 语言【知识点整理2】

2026/8/25 16:35:24

目录 一、基本概念 1.包的定义与导入 2.程序入口点 2.1 输入 3.变量 二、基本类型 1.数字 1.1 整数类型 1.2 浮点类型 1.3 数字字面常量 1.4 装箱与缓存 1.4.1 JVM是怎么存储数字的? 1.4.2 使用可空类型的时候会触发装箱操作: 1.4.3 JVM 对…

es怎么做拆词的

es怎么做拆词的

2026/8/25 16:25:24

ES 做拆词(分词)的核心是分词器,它在索引文档和搜索时,负责把长文本切成一个个独立的词(term),这样才能建立倒排索引,实现高效的全文搜索。 这个过程主要有三种角色: 输入…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/24 19:53:32

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/24 19:56:07

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…