爬虫_20251211
Browser-Use
Browser-Use 下载安装
Github 仓库链接: https://github.com/browser-use/browser-use
检查 Windows 中是否已经安装 uv:升级 uv 版本:安装方法:
- powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
复制代码 通过检查 uv 的安装路径来判断自己的安装方式。在 PowerShell 里运行:如果是用 pip 安装的 uv(Python 包),路径通常是:- C:\Users\yuanz\AppData\Local\Programs\Python\Python311\Scripts\uv.exe
- C:\Users\yuanz\AppData\Roaming\Python\Python311\Scripts\uv.exe
复制代码 如果是用官方脚本安装的 uv(独立可执行文件),路径通常是:- C:\Users\yuanz\.local\bin\uv.exe
- C:\Users\yuanz\AppData\Local\uv\bin\uv.exe
复制代码 检查是否是 pip 管理的版本:解除 PowerShell .ps1 执行禁令:- # 在 PowerShell 以管理员身份运行的情况下执行,以解禁 PowerShell 的默认禁止执行 .ps1 脚本禁令
- # 这条命令的意思是允许当前用户运行本地的 PowerShell 脚本(如 .venv\Scripts\activate.ps1),但仍阻止来自互联网且未签名的脚本。
- Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
复制代码 创建并激活虚拟环境:- cd <项目路径>
- uv venv
- .venv\Scripts\activate
复制代码 命令行前多出 (.venv) 说明虚拟环境激活成功。
安装 Browser-Use:- uv init
- uv add browser-use
- uv sync
- uvx browser-use install
复制代码 安装 dotenv:- 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("
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |