Browser-Use 文件下载自动化实战:2个参数跑通全链路
【免费下载链接】browser-use🌐 Make websites accessible for AI agents. Automate tasks online with ease.项目地址: https://gitcode.com/GitHub_Trending/br/browser-use
让 Agent 去 file-examples.com 下载最小的 DOC 文件,文件自动落到~/Downloads/tmp,全程无人值守——这就是 Browser-Use 文件下载自动化的核心效果。你只需要给它一个自然语言任务和一个downloads_path,剩下的导航、识别、落盘由库里的下载监控器包办。
先跑通:一份能直接复制的最小脚本 ⬇️
下面这段脚本做一件事:让 LLM 驱动的 Agent 访问示例站,把最小的 DOC 文件下下来。
import asyncio import os from browser_use import Agent, Browser, ChatGoogle # 用 Gemini 做决策,浏览器只负责下载落盘 llm = ChatGoogle(model='gemini-2.5-flash', api_key=os.getenv('GOOGLE_API_KEY')) browser = Browser(downloads_path='~/Downloads/tmp') async def main(): 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) asyncio.run(main())运行成功后,日志里会看到类似这样的两行,说明文件已经落盘:
[DownloadsWatchdog] ⬇️ File download starting: document-sample.doc [DownloadsWatchdog] ✅ Found downloaded file: /home/user/Downloads/tmp/document-sample.doc (251400 bytes)完整可运行的版本参考官方示例脚本 examples/features/download_file.py。
能力拆解:一条下载链路上的3个部件
跑通之后回头看,它为什么能跑通。整条链路只有3个部件。
- 下载监控器:浏览器一启动,它就接管所有下载事件,从开始、进度到完成全程跟踪,详见 browser_use/browser/watchdogs/downloads_watchdog.py。
- 浏览器配置:
downloads_path存在 profile 里,没指定时自动建一个临时目录,定义见 browser_use/browser/profile.py。 - 事件系统:
FileDownloadedEvent在文件真正写盘后发出,带上路径、大小、类型,定义见 browser_use/browser/events.py。
监控器的几个行为值得知道:它用 CDP 回调捕获downloadWillBegin/downloadProgress;启动时先对目录做一次"快照",新出现的文件才算下载,天然防重复;同名文件自动追加(1)、(2),不会覆盖。
配置详解:downloads_path 怎么写、task 怎么描述 📂
先装环境,仓库地址固定用 gitcode 镜像:
git clone https://gitcode.com/GitHub_Trending/br/browser-use cd browser-use pip install -e .downloads_path支持~展开、相对路径和绝对路径,目录不存在会自动创建(监控器启动时还会再mkdir一次兜底);不传则落到系统临时目录。Browser(downloads_path=...)只是语法糖,等价于往 profile 里写同一个字段。
task 的描述直接决定下载成败,三个要素建议写全:去哪个站点、要什么格式的文件、要几个。写得越具体,LLM 越少在页面上兜圈子;max_steps给到 20~30,给多文件任务留足余量。
进阶:自动 PDF 与下载后处理 ⚙️
profile 里auto_download_pdfs默认开启:Agent 导航到 PDF 页面时,监控器会通过浏览器内的 fetch 直接把 PDF 拉进downloads_path,并按 URL 缓存去重,同一个文件一个会话只下一次。
后处理靠事件。监控器在每次落盘后发出FileDownloadedEvent,载荷包含path、file_name、file_size、file_type、mime_type等字段(字段定义见 browser_use/browser/events.py)。拿到文件信息后,后处理逻辑就交给普通的 Python 代码,例如按扩展名把文件归档到不同子目录:
import shutil from pathlib import Path target = Path('~/Downloads/tmp').expanduser() # 按后缀归档,zip 另进解压目录 for f in target.glob('*.zip'): shutil.move(f, target / 'archives')把这段换成解压、格式转换或上传云盘,就是完整的下载后处理流水线。
实战:3个可以直接抄的任务 📂
改 task 字符串即可,代码不用动:
- 批量报表:
task='访问内部报表系统,下载2025年9月各部门财务报表,每个文件确认下载完成'——适合 Python 网页文件批量下载场景,配合downloads_path指向专用目录,下完直接按部门整理。 - 邮件附件:结合 Gmail 集成(参考 examples/integrations/gmail_2fa_integration.py 的登录与二次验证处理),task 写成"检查收件箱主题含'每日销售数据'的邮件,下载全部 CSV 附件",AI 浏览器文件下载也能顺手把登录环节做了。
- 多站点轮询:task 里直接写死多个站点地址,"依次访问 A、B、C 三个站点,各下载最新的月度报告 PDF",一个 Agent 串行跑完,文件按站点名归档。
Browser-Use 文件下载自动化把"点链接、等下载、收文件"这段机械活压缩成了两个参数。想看完整示例,从 examples/features/download_file.py 起步,配置细节在 browser_use/browser/profile.py,监控逻辑的边界情况都能从 browser_use/browser/watchdogs/downloads_watchdog.py 里读到。
【免费下载链接】browser-use🌐 Make websites accessible for AI agents. Automate tasks online with ease.项目地址: https://gitcode.com/GitHub_Trending/br/browser-use
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考