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
相关推荐
拾忆,想起几秒前
Dubbo本地存根与本地伪装实战指南:提升微服务容错能力的利器
前端·微服务·云原生·架构·dubbo·safari
wuli_滔滔5 分钟前
DevUI弹窗体系重构:微前端场景下的模态管理策略
前端·重构·架构
fruge8 分钟前
Angular 17 新特性深度解析:独立组件 + 信号系统实战
前端·javascript·vue.js
卓码软件测评8 分钟前
第三方软件质量检测机构:【Apifox多格式支持处理JSON、XML、GraphQL等响应类型】
前端·测试工具·正则表达式·测试用例·压力测试
心随雨下11 分钟前
Flutter加载自定义CSS样式文件方法
前端·css·flutter
X***C86214 分钟前
SpringMVC 请求参数接收
前端·javascript·算法
GDAL16 分钟前
css实现元素居中的18种方法
前端·css·面试·html·css3·css居中
copyer_xyf19 分钟前
SQL 语法速查手册:前端开发者的学习笔记
前端·数据库·sql
拾忆,想起23 分钟前
Dubbo服务版本控制完全指南:实现微服务平滑升级的金钥匙
前端·微服务·云原生·架构·dubbo·safari