使用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 ...
随机推荐
- fastadmin-表格使用
1.弹窗页面大小 <div id="toolbar" class="toolbar"> <a data-area='["90%&qu ...
- 根据地址栏加载对应的TAB选项卡
<script> //左侧菜单的选中状态 $(".nav-fif-level li").each(function () { var url = windo ...
- Cython二进制逆向系列(一) 初识Cython
Cython二进制逆向系列(一) 初识Cython 众所周知,Python类题目最难的一种就是使用Cython工具将py源码转换为二进制文件.此类题目相比于直接由Cpython编译而成的类字节码文 ...
- PCB设计AD规则设置(按照嘉立创设置)
本文转载自https://blog.csdn.net/subtitle_/article/details/121648972 官方参考https://www.jlc.com/portal/vtechn ...
- 技术实践|Hive数据迁移干货分享
导语 Hive是基于Hadoop构建的一套数据仓库分析系统,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能.它的优点是可以通过类SQL语句快速实现简单的MapReduce统计,不 ...
- JVM 语言的探索发现
又在 WIKI 上溜达了一下 https://en.wikipedia.org/wiki/List_of_JVM_languages,有一些新的发现: ColdFusion Markup Langua ...
- 【Python】数据分析与可视化实践:收支日统计数据可视化的实现
Python数据分析与可视化实践:收支日统计数据可视化的实现 Author:萌狼蓝天 Date:2023-5-7 数据读入与基本处理 上图是原始数据的一部分,存放于excel中,首先使用pd读入数据. ...
- python中replace不能把 \n 替换过去
问题 简要描述:python中,字符串的 replace 不能把 \n 符号带过去 截图说明 暂时的解决办法 在replace之前,先把要替换的字符串的 \n 去掉
- SpringBoot结合Liquibase实现数据库变更管理
https://juejin.cn/post/7171232605478584328 https://juejin.cn/post/7170857098538909732 前言 研发过程中经常涉及到数 ...
- 不为人知的网络编程(十六):深入分析与解决TCP的RST经典异常问题
本文由腾讯技术kernel分享,原题"TCP经典异常问题探讨与解决",下文进行了排版和内容优化等. 1.引言 TCP的经典异常问题无非就是丢包和连接中断,在这里我打算与各位聊一聊T ...