5 行代码让 Agent 替你完成网页下载:Browser-Use 下载自动化实战

发布时间:2026/11/6 3:32:12
5 行代码让 Agent 替你完成网页下载:Browser-Use 下载自动化实战

5 行代码让 Agent 替你完成网页下载:Browser-Use 下载自动化实战

【免费下载链接】browser-useOpen-source Python library for AI browser agents, plus Browser Use Cloud: stealth browsers and a hosted agent API.项目地址: https://gitcode.com/GitHub_Trending/br/browser-use

Browser-Use 是开源的 Python 浏览器 Agent 库,它能驱动真实浏览器替你找链接、点下载、把文件存到你指定的目录。适合想摆脱"手动点按钮 + 翻下载文件夹"这类重复操作的开发者和业务人员。

手动下载 vs Agent 下载:差别在哪

你上次下文件是什么流程?盯着一个页面等进度条走完,切到系统 Downloads 目录,再手动把文件挪到项目文件夹里。三个动作,每个文件都要重复一遍。

换成 Browser-Use 之后:

  • 之前:你在页面上翻找链接、盯弹窗、等进度条、切文件夹挪文件,全程人肉值守
  • 之后:你只写一句任务描述,Agent 自己打开页面、定位目标文件、完成点击,文件直接落到你指定的目录

批量场景下差别更明显。下 1 个文件手动也就多花 30 秒,下 20 个文件就是 10 分钟以上纯等待;Agent 模式下这 20 分钟可以完全去干别的事。

下载流程里谁在干活

一次下载从触发到落盘,数据是这样流动的。

  1. 浏览器里点击下载(由 Agent 点击或页面直接触发),浏览器通过 CDP 协议发出下载事件
  2. 下载监控器 全程监听这些事件:它负责建目录、等文件写完、确认文件完整
  3. 文件存到哪里,由 BrowserProfile 的downloads_path说了算
  4. 文件写完的瞬间,事件总线 派发一个FileDownloadedEvent,外部代码立刻拿到文件名、大小和完整路径

一句话总结:下载监控器管"下载过程",BrowserProfile 管"落盘位置",事件总线管"通知谁"。你不需要写任何轮询代码。

Agent 的行为由 LLM 驱动,上表是不同模型跑同一套基准时的成功率。换句话说,换一家 LLM,下载任务的执行风格和能力都会有差异,这点后面选模型时可以留意。

一行命令安装 + 最小可运行示例

安装只有一条命令:

pip install browser-use

运行前把 LLM 的密钥放到环境变量里,比如GOOGLE_API_KEY。下面是完整可运行的最小脚本:

import asyncio import os from browser_use import Agent, Browser, ChatGoogle llm = ChatGoogle(model='gemini-2.5-flash', api_key=os.getenv('GOOGLE_API_KEY')) browser = Browser(downloads_path='~/Downloads/auto_downloads') async def run(): agent = Agent( task='Go to https://file-examples.com/ and download the smallest doc file.', llm=llm, browser=browser, ) await agent.run(max_steps=25) if __name__ == '__main__': asyncio.run(run())

跑起来你会看到三样东西:

  • 终端里先后出现"下载开始"和"下载完成"两条日志,各自带文件名
  • 文件保留原始文件名,直接出现在~/Downloads/auto_downloads,不用翻浏览器默认目录
  • agent.run(max_steps=25)保证 Agent 最多思考 25 步,任务卡住也会停下来

关键参数各说一句:

  • task:任务描述,Agent 就靠这句话决定去哪里、点哪个链接
  • downloads_path:文件落盘目录,详见下一节
  • max_steps:Agent 的最大步数上限,防止它反复尝试跑飞
  • llm:驱动 Agent 的模型,browser_use/llm/目录下覆盖 OpenAI、Anthropic、Google 等多家接入,按需替换

仓库里还有带"下载完第一个再下第二个"的完整脚本,可以参考 examples/features/download_file.py。

进阶用法

下载目录怎么指定

不传downloads_path时,Browser-Use 会在系统临时目录里建一个browser-use-downloads-xxxxxxxx的随机目录(xxxxxxxx是随机 ID),用完再找就费劲了。显式指定一个路径更省心:

browser = Browser(downloads_path='~/work/reports/invoice')

路径支持~,目录不存在会自动创建,同一次运行的所有下载都累积在这里,适合按项目分目录归档。

如何监听下载完成事件

下载完要做后续处理(归档、上传、发通知)时,给事件总线挂一个回调即可:

from browser_use.browser.events import FileDownloadedEvent async def on_downloaded(event: FileDownloadedEvent) -> None: print(f'saved: {event.file_name} ({event.file_size}B) -> {event.path}') browser.event_bus.on(FileDownloadedEvent, on_downloaded)

事件对象自带file_name(文件名)、file_size(字节数)、path(完整路径)、file_type(扩展名)字段,可以按文件类型分流到不同处理逻辑。回调在 Agent 运行期间持续生效,每完成一个文件触发一次,不需要轮询。

两个真实任务示例

示例 1:月度报表批量下载

  • 任务描述:task='登录公司OA报表中心,下载2026年7月各部门的费用报表'
  • 预期结果:报表逐个落到downloads_path指定目录;配合完成回调可以逐个核对文件名和大小,省去手动整理环节。

示例 2:每日数据 CSV 归档

  • 任务描述:task='打开数据平台导出页,下载最近7天每天的数据CSV,每下一个文件后继续下一个'
  • 预期结果:Agent 逐个下载、逐个推进,文件按天命名落在同一目录;回调里直接接后续的统计或上传步骤。

相关示例与模块

仓库里还有几个值得翻一下的地方:

  • examples/features/parallel_agents.py:多个 Agent 并行跑不同下载任务
  • examples/features/custom_system_prompt.py:用自定义系统提示词约束 Agent 的行为边界
  • browser_use/browser/watchdogs/downloads_watchdog.py:下载监控器源码,想搞懂下载检测细节就看它

下一步

回到开头那个场景:把固定目录配上、回调挂上,先用 25 步的小任务验证整条链路,再放量到月度报表这种批量活。

【免费下载链接】browser-useOpen-source Python library for AI browser agents, plus Browser Use Cloud: stealth browsers and a hosted agent API.项目地址: https://gitcode.com/GitHub_Trending/br/browser-use

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考