使用Browser-Use下载文件

参考文章:
1.使用browser-use进行数据爬取实战记录
2.官方代码下载地址

实现功能:读取网页的url链接并下载到本地

待实现:将action放到browser_use\controller\service.py的init函数中仍然能够执行这个action,希望评论区有人能帮忙解答一下,是还有什么没有发现的调用吗

主代码如下:

import asyncio
import json
import os
import time

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from pydantic import SecretStr
import requests

from browser_use import Agent, Controller
from browser_use.agent.views import ActionResult
from browser_use.browser.browser import Browser, BrowserConfig
from browser_use.browser.context import BrowserContextConfig
# dotenv
load_dotenv()

def log_response():
    # 每次调用时生成新的时间戳
    timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    return timestamp

browser = Browser(
	config=BrowserConfig(
		# 更换浏览器的设置
		chrome_instance_path='C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe')
	)
)

controller = Controller()
@controller.registry.action('保存结果到指定文件')
def save_to_file(text: str,file_path: str):
    with open(file_path, 'w') as f:
        f.write(text)
    return ActionResult(extracted_content=text)

@controller.registry.action('download file from json_URL to local')
def download_file(url: str, save_path: str):
    """
    从指定的 URL 下载文件并保存到指定路径。
    
    :param url: 文件的 URL
    :param save_path: 保存文件的路径(包含文件名)
    """
    try:
        response = requests.get(url, stream=True)
        response.raise_for_status()  # 检查请求是否成功
        
        dir_path = os.path.dirname(save_path)
        if not os.path.exists(dir_path):
            os.makedirs(dir_path)
             
        with open(save_path, 'wb') as file:
            for chunk in response.iter_content(chunk_size=16384):
                file.write(chunk)
        
        print(f"文件已下载并保存至: {save_path}")
    except requests.exceptions.RequestException as e:
        print(f"下载失败: {e}")
        

        
async def run_search():
	print(log_response())

	agent = Agent(
		task=(
			'1.前往https://blog.csdn.net/m0_67547784/article/details/145259527'
			'2.提取该博客中的所有图像的url,可以查找<img>标签快速定位,输出名为urls'
			'3.提取urls中的前3个url,下载文件到D:\\Desktop\\img文件夹中'
		),
		llm=ChatOpenAI(
			base_url='https://api.siliconflow.cn/v1',
			model='deepseek-ai/DeepSeek-V3',
			api_key=SecretStr(api_key),
		),
		use_vision=False,
		tool_calling_method='raw',
		generate_gif=False,
		browser=browser,
        controller=controller
	)
	await agent.run()
	time.sleep(10)
	print(log_response())


if __name__ == '__main__':
	asyncio.run(run_search())

### 如何部署 Browser Use 相关的应用或服务 为了成功部署 Browser Use 应用,需遵循一系列配置步骤来确保环境准备就绪并能稳定运行该应用程序。 #### 准备工作 确保本地计算机已安装 Node.js 和 npm (Node Package Manager),因为 Browser Use 构建于 JavaScript 生态系统之上,并依赖这些工具来进行包管理和构建过程[^2]。 #### 获取源码 从官方仓库克隆 Browser Use 项目到本地机器。这通常通过 Git 完成: ```bash git clone https://github.com/path-to-browser-use-repo.git cd path-to-browser-use-repo ``` #### 安装依赖项 进入项目的根目录后,执行命令以下载所需的库文件和其他资源: ```bash npm install ``` #### 配置环境变量 依据具体需求设置必要的环境参数。某些情况下可能涉及 API 密钥或其他敏感信息,应妥善保管并通过 `.env` 文件或者其他安全的方式提供给程序使用。 #### 启动应用 一旦所有准备工作都已完成,则可以尝试启动 Browser Use 应用了。对于大多数基于 Node.js 的 Web 应用来说,可以通过如下方式开启服务器实例: ```bash node app.js 或者 npx nodemon 如果有nodemon的话 ``` 如果希望利用更强大的功能集,如多标签页管理、视觉识别以及内容提取等特性,还需要额外引入相应的模块和服务支持。 #### 使用 Browser Sync 实现实时预览 为了让开发者能够更加高效地调试前端页面,在开发阶段推荐启用 Browser Sync 来实现自动刷新机制。按照以下指令操作即可轻松集成这一实用插件: ```bash browser-sync start --proxy "http://localhost:8080/showcase" --files "src/main/webapp/**/*" ``` 这条命令会监听 `src/main/webapp/` 下的所有变动,并将请求转发至指定地址上的 Jetty 服务器,从而达到同步更新的效果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值