找回密码
 立即注册
首页 业界区 业界 爬虫_20251211_Browser-Use_MCP_Selenium_爬虫+LLM

爬虫_20251211_Browser-Use_MCP_Selenium_爬虫+LLM

挺喽蹂 2026-1-22 22:15:00
爬虫_20251211

Browser-Use

Browser-Use 下载安装

Github 仓库链接: https://github.com/browser-use/browser-use
检查 Windows 中是否已经安装 uv:
  1. uv --version
复制代码
升级 uv 版本:
  1. uv self update
复制代码
安装方法:

  • 用 pip 安装 uv:
  1. pip install uv
复制代码

  • 用官方脚本安装:
  1. powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
复制代码
通过检查 uv 的安装路径来判断自己的安装方式。在 PowerShell 里运行:
  1. Get-Command uv
复制代码
如果是用 pip 安装的 uv(Python 包),路径通常是:
  1. C:\Users\yuanz\AppData\Local\Programs\Python\Python311\Scripts\uv.exe
  2. C:\Users\yuanz\AppData\Roaming\Python\Python311\Scripts\uv.exe
复制代码
如果是用官方脚本安装的 uv(独立可执行文件),路径通常是:
  1. C:\Users\yuanz\.local\bin\uv.exe
  2. C:\Users\yuanz\AppData\Local\uv\bin\uv.exe
复制代码
检查是否是 pip 管理的版本:
  1. pip list | findstr uv
复制代码
解除 PowerShell .ps1 执行禁令:
  1. # 在 PowerShell 以管理员身份运行的情况下执行,以解禁 PowerShell 的默认禁止执行 .ps1 脚本禁令
  2. # 这条命令的意思是允许当前用户运行本地的 PowerShell 脚本(如 .venv\Scripts\activate.ps1),但仍阻止来自互联网且未签名的脚本。
  3. Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
复制代码
创建并激活虚拟环境:
  1. cd <项目路径>
  2. uv venv
  3. .venv\Scripts\activate
复制代码
命令行前多出 (.venv) 说明虚拟环境激活成功。
安装 Browser-Use:
  1. uv init
  2. uv add browser-use
  3. uv sync
  4. uvx browser-use install
复制代码
安装 dotenv:
  1. uv pip install python-dotenv
复制代码
创建 .env 文件注意事项:

  • 不要加引号,不要加空格。
  • .env 文件名一定要以点开头。
  • 确保它和你的 Python 脚本在同一文件夹下。
Browser-Use 使用示例:

[code]# run_agent.py# -*- coding: utf-8 -*-"""一个开箱即用的 browser-use 示例:- 读取 .env 里的 GEMINI_API_KEY- 默认用【本机浏览器】;需要可一键切换到云端浏览器- 支持为网页流量设置“本地代理”,同时保证本地 CDP (127.0.0.1) 不走代理- 兼容 browser-use 0.8.x(Browser() 只支持 use_cloud/headless/proxy)"""import osimport sysimport tracebackfrom dotenv import load_dotenv# 1) 载入 .env(放在项目根目录,内容:GEMINI_API_KEY=你的key)load_dotenv()# 2) —— 关键:保证本地调试端口不走代理(否则会 JSONDecodeError)os.environ["NO_PROXY"]  = "localhost,127.0.0.1"os.environ["no_proxy"]  = "localhost,127.0.0.1"# 如果之前在系统/终端里设置过以下代理变量,这里强制清理(仅当前进程)for k in ("HTTP_PROXY", "HTTPS_PROXY", "http_proxy", "https_proxy"):    os.environ.pop(k, None)# 3) 根据你的代理情况配置网页访问代理(如果需要)#    例如你的本地 VPN 端口是 25378,则设为:PROXY_SERVER = os.getenv("ROXY_SERVER", "http://127.0.0.1:25378")USE_PROXY = os.getenv("USE_PROXY", "false").lower() in ("1", "true", "yes")# 4) 是否使用云端浏览器(本机不稳定时可切换为 True;需先执行 `browser-use auth` 完成登录)USE_CLOUD = os.getenv("USE_CLOUD", "false").lower() in ("1", "true", "yes")# 5) 其余参数HEADLESS = os.getenv("HEADLESS", "false").lower() in ("1", "true", "yes")MODEL_ID = os.getenv("GEMINI_MODEL", "gemini-2.5-flash")# 6) 导入 browser-use(放到 NO_PROXY 设置之后)from browser_use import Agent, ChatGoogle, Browserdef make_browser():    """    兼容 browser-use 0.7.x:    Browser() 支持的参数有限:use_cloud、headless、proxy、profile_name    其中 proxy 传递为 playwright 兼容的 dict:      {"server": "http://host:port", "username": "...", "password": "..."}    """    kwargs = {        "use_cloud": USE_CLOUD,        "headless": HEADLESS,    }    if (not USE_CLOUD) and USE_PROXY:        kwargs["proxy"] = {"server": PROXY_SERVER}        # 如需账号密码,改成:        # kwargs["proxy"] = {"server": PROXY_SERVER, "username": "your_user", "password": "your_pass"}    return Browser(**kwargs)# 不再需要文件解析和 CSV 生成功能,数据直接输出到 terminaldef main():    # 小检查:API Key    key = os.getenv("GEMINI_API_KEY")    if not key:        print("❌ 未检测到 GEMINI_API_KEY,请在项目根目录创建 .env 并写入:")        print("GEMINI_API_KEY=你的key")        sys.exit(1)    print("=== Config ===")    print(f"USE_CLOUD : {USE_CLOUD}")    print(f"HEADLESS  : {HEADLESS}")    print(f"USE_PROXY : {USE_PROXY}  ({PROXY_SERVER if USE_PROXY else 'no proxy'})")    print(f"MODEL_ID  : {MODEL_ID}")    print("NO_PROXY  :", os.environ.get("NO_PROXY"))    browser = make_browser()    agent = Agent(        task="""            【严格动作协议】            - 你是浏览器自动化 Agent。你每一步“必须”返回一个且仅一个动作(action),动作必须是下列之一:            navigate / click / input / send_keys / wait / scroll / find_text / extract / evaluate / read_file / replace_file / done            - 除最终 `done` 外,不要输出任何自然语言或总结;若需要记录进度,使用 `replace_file`。            - 如不确定,也必须给出一个动作(例如 wait)。绝不能只输出思考(thinking)。            【任务】            1) 打开 https://www.cn-healthcare.com/ 。            2) 点击顶栏“搜索/放大镜”图标 ,先等待url变为 "https://www.cn-healthcare.com/search/",再等待输入框出现;            3) 然后在顶部的  的输入框中输入:公立医院,并按 Enter,等待 10 秒;若无明显结果,再按一次 Enter 或再点搜索按钮。            4) 滚动到底部,等待 5 秒,只执行这一次操作。            4) 从当前页抽取文章卡片(仅 cn-healthcare.com 域):            - 每个卡片元素:             - 标题: 内的

下的  文本             - 网址:

内的  标签内的 href 参数内容             - 作者: 下的  标签内的 span.author 的所有文本内容             - 发布日期: 下的  内的所有文本内容(格式 yyyy/mm/dd)            5) 过滤:            - 仅保留 URL 含 /article /content /articlewm,且不是图片/视频/PDF 等后缀            - 日期在 2023-05-01 至 2025-10-31(含端点);相对时间如“刚刚/几天前”跳过            - URL 去重            【抽取与落地(必须)】            - 完成搜索与滚动后,执行一次 extract:            - 每个卡片元素:             - 标题: 内的

下的  文本             - 网址:

内的  标签内的 href 参数内容             - 作者: 下的  标签内的 span.author 的所有文本内容             - 发布日期: 下的  内的所有文本内容(格式 yyyy/mm/dd)            - 执行完 evaluate 后,Agent 立即结束(调用 done)。            - 数据会直接显示在 terminal 中,无需写入文件。            【禁止事项】            - 除最终 `done` 外,任何步骤禁止输出自然语言文本、代码块或截图。        """,        llm=ChatGoogle(model=MODEL_ID),        browser=browser,    )    # 运行 Agent,数据会直接输出到 terminal    try:        print("
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

2026-1-24 08:10:32

举报

2026-1-24 11:24:23

举报

您需要登录后才可以回帖 登录 | 立即注册