AI News HubLIVE
站内改写3 分钟阅读

用Python构建能使用浏览器的AI代理

本文介绍了如何使用Playwright、browser-use和LangGraph在Python中构建能浏览和操作真实网站的AI代理。文章涵盖了Playwright相较于Selenium的优势(持久WebSocket连接、内置浏览器二进制、自动等待等)、环境搭建步骤、动态页面抓取、多步骤表单填写、反爬虫处理、会话持久化以及Docker部署。通过实际代码示例,读者将学会构建一个能导航网站、填写表单、提取结构化数据并通过LLM决策的浏览器代理。

来源Machine Learning Mastery作者: Shittu Olumide

用Python构建能使用浏览器的AI代理

大多数AI代理教程从API开始,教你如何调用OpenWeather、Stripe端点或从GitHub拉取数据。这是一个不错的起点,但当你尝试构建真实应用时,会发现许多需要的任务根本没有API支持。

人类每天用浏览器做的事情——填写政府表格、查看竞争对手价格、从那些通过JavaScript渲染来保护数据的网站提取研究资料、登录从未听说过OAuth的门户——这些任务大约有11亿个网站,其中只有极少数提供公共API,其余只“说浏览器语言”。

一个只限于API调用的代理只能处理人类日常工作约5%的任务。而赋予代理浏览器能力后,覆盖范围接近100%。这正是本文要解决的问题。

据估计,2026年全球AI代理市场规模为109.1亿美元,预计到2030年将达到503.1亿美元,其中具备浏览器能力的代理是增长核心。已有27.7%的企业在生产环境中运行基于浏览器的代理,而两年前这个数字几乎为零。工具已经成熟,模式也已稳定,可以系统地教授。

为什么选择Playwright而非Selenium

五年前,浏览器自动化几乎都使用Selenium。Selenium仍然广泛部署、工作正常,也不会消失。但对于2026年的任何新项目,Playwright是默认选择。原因很实际。

Selenium通过向WebDriver发送独立的HTTP请求与浏览器通信,每次点击、输入、滚动都是一次单独请求。Playwright则为整个会话使用持久WebSocket连接,命令通过该通道流动,没有每次操作的往返开销。独立基准测试一致显示,Playwright在测试套件级别比Selenium快30-50%,每次操作平均约290毫秒,而Selenium约536毫秒。对于可能执行数百次操作的浏览器代理,这种差距会叠加。

Playwright还捆绑了自己的浏览器二进制文件。安装时,你会获得与Playwright版本兼容的Chromium、Firefox和WebKit预配置版本,没有驱动版本不匹配或CI流水线因Chrome更新而中断的问题。它内置了自动等待——在点击元素前会验证元素可见、启用且不在动画中,无需编写time.sleep(2)碰运气。

对于AI代理,Playwright触发真实的鼠标和键盘事件,模拟人类与浏览器的交互方式。设计用于检测自动化的网站会寻找合成DOM点击,而Playwright的交互模型更难与真实人类输入区分。

此外还有browser-use库,它位于更高一层。browser-use是一个Python库,为LLM提供可工作的浏览器。底层使用Playwright驱动浏览器,但LLM读取页面状态并决定点击、输入和提取什么,无需CSS选择器。你只需用自然语言描述任务,它就会完成剩下的工作。本文将覆盖原始Playwright和browser-use,因为它们满足不同需求:Playwright用于精确、可预测的控制,browser-use用于代理自主处理导航决策。

环境搭建

你需要Python 3.10或更高版本、OpenAI API密钥以及大约五分钟时间。

  1. 创建虚拟环境python -m venv browser_agent_env,然后激活(Linux/macOS: source browser_agent_env/bin/activate;Windows: browser_agent_env\Scripts\activate)。
  2. 安装依赖pip install playwright browser-use langchain langchain-openai langgraph langchain-community python-dotenv
  3. 安装浏览器二进制文件:运行playwright install chromium(或playwright install安装所有三种引擎)。这是许多人遗漏的步骤。
  4. 存储API密钥:在项目目录中创建.env文件,加入OPENAI_API_KEY=your_api_key_here,并立即添加到.gitignore
  5. 验证工作环境:运行一个简单脚本,导航到example.com,读取标题并截图保存。如果运行成功,环境就配置好了。

网页导航与抓取

你之所以需要Playwright而不是requests+BeautifulSoup,是因为JavaScript渲染。现代网站先发送HTML框架,然后通过JavaScript动态构建实际内容(React、Vue、Angular、Next.js)。普通的HTTP请求只能获取框架,而Playwright运行真实浏览器,可以像人类一样看到所有JavaScript执行后的内容。

示例目标为books.toscrape.com,这是一个合法的抓取练习沙盒。它分页显示结果,使用动态类名表示评级,较真实地反映了电商产品页的结构。

核心代码展示了如何使用wait_for_selector等待特定元素出现后再提取数据,而不是固定延时。评级提取通过CSS类名(如star-rating Three)解析出文本值。这是处理动态页面时常见的模式。

与LLM集成:浏览器代理的工作流

将浏览器操作连接到LLM,可以使用browser-use库和LangGraph构建代理工作流。基本概念是:LLM(如GPT-4)读取当前页面内容,决定下一步操作(点击、输入、提取、导航),然后执行并观察结果,循环直到任务完成。

对于高级用例,需要处理反爬虫检测(如使用更真实的用户代理、调整视口大小、随机延迟)、管理会话状态(保持登录状态)以及使用Docker容器化部署,确保可重现性和隔离性。

L总结

本文从零开始构建了一个能使用浏览器的AI代理:从Playwright的基础知识到与LangGraph和browser-use集成,再到实际部署考虑。无论你是要自动化填写表格、抓取动态数据,还是构建一个能自主浏览网页的AI助手,这些模式都适用。浏览器代理已将AI能力扩展到API无法覆盖的95%的网站任务中。