Browser use — 利用 AI 操作浏览器 · 实践篇

1. Browser-Use 简介

Browser-Use 是一个强大的框架,它让 AI 能够通过自然语言控制浏览器,完成复杂的网页任务。它基于大语言模型,使用 Playwright 作为底层浏览器自动化工具,让 AI 能够像人类一样与网页交互。

1.1 核心优势

  • 自然语言控制:通过简单的文本指令控制浏览器
  • 智能元素识别:自动识别网页中的可交互元素
  • 视觉理解能力:可以理解页面布局和元素位置
  • 可扩展性:支持自定义功能和操作

2. 快速入门

2.1 基本使用

最简单的使用方式是提供一个任务描述,让 AI 自动完成:

python 复制代码
from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio
from dotenv import load_dotenv
load_dotenv()

async def main():
    agent = Agent(
        task="帮我谷歌搜索最新的人工智能新闻",
        llm=ChatOpenAI(model="gpt-4o"),
    )
    await agent.run()

asyncio.run(main())

2.2 自定义功能

您可以通过自定义 Controller 来扩展 Browser-Use 的功能,实现特定业务需求:

python 复制代码
from langchain_openai import ChatOpenAI
from browser_use import Agent, Controller, ActionResult
from pydantic import BaseModel, Optional
import asyncio
from dotenv import load_dotenv
load_dotenv()

# 定义数据模型
class JobDetails(BaseModel):
    title: str
    company: str
    job_link: str
    salary: Optional[str] = None
    
# 创建控制器并注册自定义操作
controller = Controller()
@controller.action('保存职位详情到数据库', param_model = JobDetails)
async def save_job(job_details: JobDetails, browser: Browser) -> ActionResult:
    # 这里可以调用接口,将数据保存到后端
    await post_data_to_database(job_details)
    return ActionResult(
        success=True,
        extracted_content="成功保存职位信息",
        include_in_memory=True
    )

async def main():
    agent = Agent(
        task="搜索软件工程师职位并保存结果",
        llm=ChatOpenAI(model="gpt-4o"),
        controller=controller
    )
    await agent.run()

asyncio.run(main())

3. 实际应用案例:自动检测购物车按钮

3.1 业务场景

在电子商务领域,我们经常需要检测不同商家店铺的 Checkout 按钮。由于店铺主题千变万化,按钮的样式和位置各不相同,传统方法效果不佳:

  • 购物车按钮会随店铺主题变化,难以通过预设值匹配
  • 匹配失败时需要人工介入,增加维护成本

3.2 解决方案流程

graph TD A[打开店铺URL] --> B[通过API加入购物车] B --> C[AI自动寻找购物车] C --> D[找到Checkout按钮] D --> E{按钮与预设值匹配?} E -->|是| F[返回匹配成功] E -->|否| G[生成推荐选择器] G --> H[返回推荐结果]

3.3 实现代码

python 复制代码
class ButtonCheckService:
    def __init__(self):
        self.controller = Controller()
        
        @self.controller.action('将商品加入购物车')
        async def add_to_cart(params: AddToCartParams, browser: Browser) -> ActionResult:
            # 调用店铺 API 加购
            response = await api_client.add_to_cart(params.product_id, params.quantity)
            
            return ActionResult(
                success=response.status == "success",
                extracted_content="成功将商品加入购物车",
                include_in_memory=True
            )
     
        @self.controller.action('检查 Checkout 按钮是否与预设值匹配')
        async def check_button_preset(params: NoParams, browser: Browser) -> ActionResult:
            # 检查预设选择器
            is_match = await get_is_match_selector(PRESET_SELECTOR) is not None
            
            if is_match:
                return ActionResult(
                    success=True,
                    extracted_content=f'选择器与预设值匹配: {PRESET_SELECTOR}',
                    include_in_memory=True
                )
            
            # 如果不匹配,推荐新选择器
            recommended_selectors = await self.get_recommend_selectors(page)
            
            return ActionResult(
                success=True,
                extracted_content=f'选择器不匹配,推荐选择器: {recommended_selectors}',
                include_in_memory=True
            )
            
    async def run_checkout_detection(self, shop_url: str):
        agent = Agent(
            task=f"访问{shop_url},找到购物车并检查Checkout按钮",
            llm=ChatOpenAI(model="gpt-4o"),
            controller=self.controller
        )
        
        result = await agent.run()
        return result
相关推荐
Mintopia1 分钟前
Web 安全与反编译源码下的权限设计:构建前后端一体的信任防线
前端·安全·编译原理
林深现海22 分钟前
Jetson Orin nano/nx刷机后无法打开chrome/firefox浏览器
前端·chrome·firefox
黄诂多35 分钟前
APP原生与H5互调Bridge技术原理及基础使用
前端
前端市界39 分钟前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github
文艺理科生40 分钟前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
前端·后端·架构
千寻girling41 分钟前
主管:”人家 Node 框架都用 Nest.js 了 , 你怎么还在用 Express ?“
前端·后端·面试
C澒1 小时前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构
清山博客1 小时前
OpenCV 人脸识别和比对工具
前端·webpack·node.js
要加油哦~1 小时前
AI | 实践教程 - ScreenCoder | 多agents前端代码生成
前端·javascript·人工智能
玄同7651 小时前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae