使用browser-use进行数据爬取实战记录
前言
前面的文章介绍了browser-use的基本使用,今天带来的分享是使用browser-use进行一次数据爬取的实战(不过还是demo级别的)。
使用到的三个玩法分别是使用自己的浏览器、定义输出结构与注册一个行为。
实践
使用自己的浏览器
首先解决使用自己的浏览器。
代码:
from langchain_openai import ChatOpenAI
from browser_use import Agent
from browser_use.browser.browser import Browser, BrowserConfig
from dotenv import load_dotenv
import os
load_dotenv()
import asyncio
api_key = os.getenv('Silicon_Cloud_API_KEY')
base_url = os.getenv('Base_URL')
model = os.getenv('Model')
browser = Browser(
config=BrowserConfig(
# NOTE: you need to close your chrome browser - so that this can open your browser in debug mode
# d:\Learning\AI-related\browser-use-demo\.env注意:您需要关闭您的Chrome浏览器,以便此操作可以在调试模式下打开您的浏览器
chrome_instance_path=r'C:\Program Files\Google\Chrome\Application\chrome.exe',
)
)
llm = ChatOpenAI(model=model, api_key=api_key, base_url=base_url)
async def main():
agent = Agent(
task="获取https://cloud.siliconflow.cn/bills的账单信息",
llm=llm,
browser=browser,
use_vision=False,
)
result = await agent.run()
print(result)
asyncio.run(main())
将chrome_instance_path替换为你自己的浏览器路径。
为什么要使用自己的浏览器呢?
有一个好处就是你登录过的保存信息的网站就可以直接登录不用验证了。
就比如我想查看我硅基流动的账单一样,如果不用自己的浏览器还要进行登录操作,用自己的浏览器如果保存信息了就不用再登了。
模型我选择的是:Qwen/Qwen2.5-72B-Instruct。
查看效果:
准确获取到了我们想要的数据。
定义自定义输出
其次,我们来定义自定义输出。
代码:
from langchain_openai import ChatOpenAI
from browser_use import Agent
from browser_use.browser.browser import Browser, BrowserConfig
from dotenv import load_dotenv
import os
from pydantic import BaseModel
import asyncio
from typing import List
from browser_use import ActionResult, Agent, Controller
load_dotenv()
api_key = os.getenv('Silicon_Cloud_API_KEY')
base_url = os.getenv('Base_URL')
model = os.getenv('Model')
browser = Browser(
config=BrowserConfig(
# NOTE: you need to close your chrome browser - so that this can open your browser in debug mode
# d:\Learning\AI-related\browser-use-demo\.env注意:您需要关闭您的Chrome浏览器,以便此操作可以在调试模式下打开您的浏览器
chrome_instance_path=r'C:\Program Files\Google\Chrome\Application\chrome.exe',
)
)
class Bill(BaseModel):
account_period: str
total_consumption : float
controller = Controller(output_model=Bill)
llm = ChatOpenAI(model=model, api_key=api_key, base_url=base_url)
async def main():
agent = Agent(
task="""
获取https://cloud.siliconflow.cn/bills的账单信息。
""",
llm=llm,
controller=controller,
browser=browser,
use_vision=False,
)
result = await agent.run()
print(result)
asyncio.run(main())
效果:
使用到了自己定义的数据结构。
注册一个行为
比如我想把结果保存到一个文件中。
代码:
from langchain_openai import ChatOpenAI
from browser_use import Agent, Controller
from browser_use.browser.browser import Browser, BrowserConfig
from browser_use.agent.views import ActionResult
from dotenv import load_dotenv
import os
load_dotenv()
import asyncio
api_key = os.getenv('Silicon_Cloud_API_KEY')
base_url = os.getenv('Base_URL')
model = os.getenv('Model')
browser = Browser(
config=BrowserConfig(
# NOTE: you need to close your chrome browser - so that this can open your browser in debug mode
# d:\Learning\AI-related\browser-use-demo\.env注意:您需要关闭您的Chrome浏览器,以便此操作可以在调试模式下打开您的浏览器
chrome_instance_path=r'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)
llm = ChatOpenAI(model=model, api_key=api_key, base_url=base_url)
async def main():
agent = Agent(
task="获取https://cloud.siliconflow.cn/bills的账单信息,并将结果保存到test3.txt。",
llm=llm,
controller=controller,
browser=browser,
use_vision=False,
)
result = await agent.run()
print(result)
asyncio.run(main())
效果:
最后
以上就是使用browser-use进行一次数据爬取的实战记录,更多玩法可由读者自行探索。
使用browser-use进行数据爬取实战记录的更多相关文章
- Python爬虫入门教程 15-100 石家庄政民互动数据爬取
石家庄政民互动数据爬取-写在前面 今天,咱抓取一个网站,这个网站呢,涉及的内容就是 网友留言和回复,特别简单,但是网站是gov的.网址为 http://www.sjz.gov.cn/col/14900 ...
- 爬虫1.5-ajax数据爬取
目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 ...
- Web Scraper——轻量数据爬取利器
日常学习工作中,我们多多少少都会遇到一些数据爬取的需求,比如说写论文时要收集相关课题下的论文列表,运营活动时收集用户评价,竞品分析时收集友商数据. 当我们着手准备收集数据时,面对低效的复制黏贴工作,一 ...
- python实现人人网用户数据爬取及简单分析
这是之前做的一个小项目.这几天刚好整理了一些相关资料,顺便就在这里做一个梳理啦~ 简单来说这个项目实现了,登录人人网并爬取用户数据.并对用户数据进行分析挖掘,终于效果例如以下:1.存储人人网用户数据( ...
- 芝麻HTTP:JavaScript加密逻辑分析与Python模拟执行实现数据爬取
本节来说明一下 JavaScript 加密逻辑分析并利用 Python 模拟执行 JavaScript 实现数据爬取的过程.在这里以中国空气质量在线监测分析平台为例来进行分析,主要分析其加密逻辑及破解 ...
- Python爬虫 股票数据爬取
前一篇提到了与股票数据相关的可能几种数据情况,本篇接着上篇,介绍一下多个网页的数据爬取.目标抓取平安银行(000001)从1989年~2017年的全部财务数据. 数据源分析 地址分析 http://m ...
- quotes 整站数据爬取存mongo
安装完成scrapy后爬取部分信息已经不能满足躁动的心了,那么试试http://quotes.toscrape.com/整站数据爬取 第一部分 项目创建 1.进入到存储项目的文件夹,执行指令 scra ...
- Ajax数据爬取
Ajax的基本原理 以菜鸟教程的代码为例: XMLHTTPRequest对象是JS对Ajax的底层实现: var xmlhttp; if (window.XMLHttpRequest) { // IE ...
- 基于 PHP 的数据爬取(QueryList)
基于PHP的数据爬取 官方网站站点 简单. 灵活.强大的PHP采集工具,让采集更简单一点. 简介: QueryList使用jQuery选择器来做采集,让你告别复杂的正则表达式:QueryList具有j ...
- Scrapy 框架 CrawlSpider 全站数据爬取
CrawlSpider 全站数据爬取 创建 crawlSpider 爬虫文件 scrapy genspider -t crawl chouti www.xxx.com import scrapy fr ...
随机推荐
- Astro Zen Blog |一个优雅、极简、强大的博客
介绍 Astro Zen 博客项目 如果你想部署一个自己的静态博客,又不想到处折腾,并且是熟悉的前端技术栈,你可以尝试下:Astro Zen Blog! Astro Zen Blog 是一个使用 As ...
- .NET 使用 ZXing.Net 生成二维码,并识别
.NET 使用 ZXing.Net 生成二维码,并识别 前言 前面已经分享给很多创建二维码,条形码...等一系列的方式 各有优缺点,暂时不做评价.今天推荐ZXing.Net .也是比较全面的一种方式, ...
- Java和.Net互相使用RSA加密时的问题和处理方法
前言 我们产品是使用JAVA语言开发的,有个供第三方获取Token的接口,过程大概就是第三方先调一个注册接口,获取一个RSA公钥,然后用通过公钥加密后的一些认证信息调用获取Token的接口,如果信息无 ...
- ChatGPT在功能测试用例生成方面的优势
功能测试是软件测试的非常重要的分类,所有软件系统都要保证功能的正确性,而测试用例则是功能测试的重中之重.测试用例的编写是测试人员必须认真面对的一件耗时费力.枯燥乏味的工作.如何才能快速高效地编写测试用 ...
- 【Python】2023年Python期末复习题
Python百分百挂科指南 出题人,出的题,水平不咋样,给出的参考答案一堆错误,给出的正确选项单词都能拼错. 非本次考试人员不必看,没有参考价值 选择题 下列哪个标识符是不合法的()D A. Name ...
- 【Python】HTML中Base64存储的图片转为本地图片文件
我用jupyter notebook写了笔记之后,想导出markdown,然后导出不了,我就只能导出html,结果导出的html存储图片用的base64的方式-- 于是我就要把导出的html文档里面的 ...
- [转]fatal: remote error: The unauthenticated git protocol on port 9418 is no longer support问题解决
背景 因为居家办公,把代码从远程clone下来之后,发现使用npm install一直失败. 提示的错误:fatal: remote error: The unauthenticated git pr ...
- IM开发者的零基础通信技术入门(十):零基础,史上最强5G技术扫盲
本文引用了"鲜枣课堂"的<史上最强5G科普>文章内容.为了更好的内容呈现,在引用和收录时内容有改动,转载时请注明原文来源. 1.内容概述 ➊ 5G技术的关注度越来越高: ...
- 2025-01-04:不包含相邻元素的子序列的最大和。用go语言,给定一个整数数组 nums 和一个由二维数组 queries 组成的查询列表,其中每个查询的格式为 queries[i] = [pos
2025-01-04:不包含相邻元素的子序列的最大和.用go语言,给定一个整数数组 nums 和一个由二维数组 queries 组成的查询列表,其中每个查询的格式为 queries[i] = [pos ...
- asp.net core Theme 中间件
asp.net core中自定义视图引擎,继承接口 IViewLocationExpander public class ThemeViewLocationExpander : IViewLocati ...