Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取。本地部署方式
开源地址:https://github.com/mendableai/firecrawl
01、FireCrawl 项目简介
Firecrawl 是一款开源、优秀、尖端的 AI 爬虫工具,专门从事 Web 数据提取,并将其转换为 Markdown 格式或者其他结构化数据。
Firecrawl 还特别上线了一个新的功能:LLM Extract,即利用大语言模型(LLM)快速完成网页数据的提取,从而转换为LLM-ready的数据。
所以无论你是需要为大语言模型(如 GPT)提供数据训练,还是需要为检索增强生成(RAG)获取高质量数据,FireCrawl 都能够为你提供全面的支持。
02、主要功能
• 强大的抓取能力:几乎能抓取任何网站的内容,无论是简单的静态页面,还是复杂的动态网页,它都能够应对自如。
• 智能的爬取状态管理:提供了分页、流式传输等功能,使得大规模网页抓取变得更加高效。此外,它还具备清晰的错误提示功能,让你在爬取过程中可以快速排查问题,保证数据抓取的顺利进行。
• 多样的输出格式:不仅支持将抓取的内容转换为 Markdown 格式,还支持将其输出为结构化数据(如 JSON)。
• 增强 Markdown 解析:优化 Markdown 解析逻辑,能够输出更干净、更高质量的文本。
• 全面的 SDK 支持:提供了丰富的 SDK,支持多种编程语言(如 Go、Rust 等),并全面兼容 v1 API。
• 快速收集相关链接:新增了/map 端点,可以快速收集网页中的相关链接。这对于需要抓取大量相关内容的用户来说,是一个极其高效的功能。
03、FireCrawl应用场景
1. 大语言模型训练
通过抓取海量网页内容并将其转换为结构化数据,FireCrawl 能够为大语言模型(如 GPT)提供丰富的训练数据。
这对于希望提升模型表现的开发者或企业来说,FireCrawl 是一个理想的工具。
2. 检索增强生成(RAG):
FireCrawl 可以帮助用户从不同网页中获取相关数据,支持检索增强生成(RAG)任务。这意味着你可以通过 FireCrawl 获取并整理数据,用于生成更加精确、更加丰富的文本内容。
3. 数据驱动的开发项目
如果你的项目依赖大量的网页数据,比如训练语言模型、构建知识图谱、数据分析等等,FireCrawl 是一个不二之选。
它可以帮助你快速获取所需数据,并将其转换为你需要的格式,无论是 Markdown 还是 JSON,都能轻松搞定。
4. SEO 与内容优化
对于那些需要进行 SEO 优化或内容监控的项目,FireCrawl 也非常适用。
你可以利用 FireCrawl 爬取竞争对手的网站内容,分析他们的 SEO 策略,或者监控网站内容的变化,帮助你优化自己的网站。
5. 在线服务与工具集成
FireCrawl 提供了易于使用且统一的 API,支持本地部署或在线使用。
你可以将 FireCrawl 无缝集成到现有的服务或工具中,如 Langchain、Dify、Flowise 等,进一步扩展其应用能力。
04、安装与使用
当然 FireCrawl 是支持本地部署的,通过源码进行部署安装服务,但是依赖的语言过多,不仅有Nodejs、Python,还有Rust!还是建议在线体验!
使用方式
官方项目中列了很多通过curl接口命令的方式,其实这样就有些繁琐!
我们可以通过各种API工具来进行请求,使用体验会更好一些。
也可以通过官方部署的网页上功能来进行,效果会更加!
最后就是开发者常用的SDK方式,这里以Python语言为例:
• 安装 Python SDK
代码语言:javascript
pip install firecrawl-py
• 调用接口,抓取目标网页数据
代码语言:javascript
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="YOUR_API_KEY")
crawl_result = app.crawl_url('mendable.ai', {'crawlerOptions': {'excludes': ['blog/*']}})
# Get the markdown
for result in crawl_result:
print(result['markdown'])
• 要抓取单个 URL,需要使用 scrape_url 方法。将 URL 作为参数,并以字典形式返回抓取的数据。
代码语言:javascript
url = 'https://www.xxxx.com'
scraped_data = app.scrape_url(url)
05、总结
作为一名开发者,我们都知道,一个好用的工具可以大大提高我们的工作效率,而 FireCrawl 就是这样一个值得推荐的工具。
无论你是需要爬取大量数据,还是需要将网页内容转换为文档,FireCrawl 都能够帮助你轻松实现这些需求。
六、本地部署方式:
配置.env文件
# .env# ===== Required ENVS ======
NUM_WORKERS_PER_QUEUE=8
PORT=3002
HOST=0.0.0.0#for self-hosting using docker, use redis://redis:6379. For running locally, use redis://localhost:6379
REDIS_URL=redis://redis:6379#for self-hosting using docker, use redis://redis:6379. For running locally, use redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://redis:6379
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html## To turn on DB authentication, you need to set up supabase.
USE_DB_AUTHENTICATION=false# ===== Optional ENVS ======# Supabase Setup (used to support DB authentication, advanced logging, etc.)
SUPABASE_ANON_TOKEN=
SUPABASE_URL=
SUPABASE_SERVICE_TOKEN=# Other Optionals
# use if you've set up authentication and want to test with a real API key
TEST_API_KEY=
# set if you'd like to test the scraping rate limit
RATE_LIMIT_TEST_API_KEY_SCRAPE=
# set if you'd like to test the crawling rate limit
RATE_LIMIT_TEST_API_KEY_CRAWL=
# set if you'd like to use scraping Be to handle JS blocking
SCRAPING_BEE_API_KEY=
# add for LLM dependednt features (image alt generation, etc.)
OPENAI_API_KEY=
BULL_AUTH_KEY=@
# use if you're configuring basic logging with logtail
LOGTAIL_KEY=
# set if you have a llamaparse key you'd like to use to parse pdfs
LLAMAPARSE_API_KEY=
# set if you'd like to send slack server health status messages
SLACK_WEBHOOK_URL=
# set if you'd like to send posthog events like job logs
POSTHOG_API_KEY=
# set if you'd like to send posthog events like job logs
POSTHOG_HOST=# set if you'd like to use the fire engine closed beta
FIRE_ENGINE_BETA_URL=# Proxy Settings for Playwright (Alternative you can can use a proxy service like oxylabs, which rotates IPs for you on every request)
PROXY_SERVER=
PROXY_USERNAME=
PROXY_PASSWORD=
# set if you'd like to block media requests to save proxy bandwidth
BLOCK_MEDIA=# Set this to the URL of your webhook when using the self-hosted version of FireCrawl
SELF_HOSTED_WEBHOOK_URL=# Resend API Key for transactional emails
RESEND_API_KEY=# LOGGING_LEVEL determines the verbosity of logs that the system will output.
# Available levels are:
# NONE - No logs will be output.
# ERROR - For logging error messages that indicate a failure in a specific operation.
# WARN - For logging potentially harmful situations that are not necessarily errors.
# INFO - For logging informational messages that highlight the progress of the application.
# DEBUG - For logging detailed information on the flow through the system, primarily used for debugging.
# TRACE - For logging more detailed information than the DEBUG level.
# Set LOGGING_LEVEL to one of the above options to control logging output.
LOGGING_LEVEL=INFO
进入目录,安装部署
docker compose up -d
部署完后访问:http://localhost:3002/test
只要返回响应是 Hello, world! 就表明本地 Firecrawl 启动成功了。
相关文章:
Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取。本地部署方式
开源地址:https://github.com/mendableai/firecrawl 01、FireCrawl 项目简介 Firecrawl 是一款开源、优秀、尖端的 AI 爬虫工具,专门从事 Web 数据提取,并将其转换为 Markdown 格式或者其他结构化数据。 Firecrawl 还特别上线了一个新的功…...
zabbix数据库溯源
0x00 背景 zabbix数据库如果密码泄露被登录并新增管理员如何快速发现?并进行溯源? 本文介绍数据库本身未开启access log的情况。 0x01 实践 Mysql 数据库查insert SELECT * FROM sys.host_summary_by_statement_type where statement like %insert% 查…...
oracle 索引
Oracle 数据库中的索引是优化查询性能的重要工具,其类型多样,适用于不同场景。以下是 Oracle 索引的主要分类及特点: 1.B-Tree 索引(平衡树索引) 特点: 默认索引类型,树形结构(根、…...
ZooKeeper集群高可用性测试与实践:从规划到故障模拟
#作者:任少近 文章目录 ZooKeeper集群环境规划1.集群数据一致性测试2.集群节点故障测试 ZooKeeper集群高可用性测试的主要目的是确保在分布式环境中,ZooKeeper服务能够持续提供一致性和高可用性的协调服务。 ZooKeeper集群环境规划 节点ipZooKeeper版本…...
RocketMQ 架构
一、RocketMQ 核心架构概述 1. 主要组件 Name Server: 集群的「中枢神经」,负责 Topic 元数据管理(如 Topic 分区分布、Broker 节点状态监控)。 Broker: 消息存储与流转的核心节点,负责消息的持久化…...
Microchip AN1477中关于LLC数字补偿器的疑问
最近在学习Microchip的AN1477关于LLC的功率级传递函数推导及数字补偿器设计,对其中的2P2Z数字补偿器的系数有一些困惑。我在MATLAB中运行了源程序提供的VMC_LLC.m文件,发现有些地方和AN1477中的结果不一致。现在把相关有疑问的地方列举出来,也…...
力扣热题100(方便自己复习,自用)
力扣热题100 1. 两数之和 - 力扣(LeetCode) 查找两数之和是不是等于target也就是我们找到一个数之后,用target将其减掉,再寻找应当对应的元素是什么每找到一个数,我们就将其放在集合中,因为集合中可以去重…...
视频翻译器免费哪个好?轻松玩转视频直播翻译
你是不是觉得看外语视频很麻烦?每次遇到喜欢的外语电影、电视剧或动漫,总是要等字幕组的翻译,或者因为语言不通而错过精彩的情节。 这个时候,掌握多语种直播翻译方案就显得尤为重要,有了实时字幕,看外语视…...
深度学习中的“刹车”:正则化如何防止模型“超速”
深度学习中的“刹车”:正则化如何防止模型“超速” 大家好!今天我们来聊聊深度学习中的一个重要概念——正则化。 什么是过拟合? 想象一下,你正在教一个孩子认字。你给他看很多猫的图片,他都能正确识别。但是&#…...
【pytest框架源码分析五】pytest插件的注册流程
前文介绍到pytest整体是运用插件来实现其运行流程的。这里仔细介绍下具体过程。 首先进入main方法 def main(args: list[str] | os.PathLike[str] | None None,plugins: Sequence[str | _PluggyPlugin] | None None, ) -> int | ExitCode:"""Perform an i…...
【协作开发】低成本一键复刻github的gitea
在阅读 next-public 时,反思原本的需求,是否本未倒置,故而重新调研当下开源现状。发现 gitea 完全满足商业软件的开发要求,并且价格足够低,使用足够方便,其他同类软件完全不用看了,真是世界级的…...
虚拟机 | Ubuntu操作系统:su和sudo理解及如何处理忘记root密码
系列文章目录 虚拟机 | Ubuntu 安装流程以及界面太小问题解决 虚拟机 | Ubuntu图形化系统: open-vm-tools安装失败以及实现文件拖放 文章目录 系列文章目录前言一、su和sudo是什么?1、su忘记root密码的解决方案无法进入GRUB引导页面 2、sudo推荐使用sud…...
token升级(考虑在分布式环境中布置token,结合session保证请求调用过程中token不会过期。)
思路: 首先,用户的需求是确保使用同一个Token的外部调用都在一个Session中处理。 需要考虑Token与Session绑定、安全措施、Session管理、分布式处理等。 使用Redis作为Session存储, 在Java中 通过Spring Data Redis或Lettuce库实现。 2.生成…...
Flink 通过 Chunjun Oracle LogMiner 实时读取 Oracle 变更日志并写入 Doris 的方案
文章目录 一、 技术背景二、 关键技术1、 Oracle LogMiner2、 Chunjun 的 LogMiner 关键流程3、修复 Chunjun Oracle LogMiner 问题 一、 技术背景 在大数据实时同步场景中,需要将 Oracle 数据库的变更数据(CDC) 采集并写入 Apache Doris&am…...
若依(RuoYi)框架新手使用指南
若依(RuoYi)框架新手使用指南 若依(RuoYi)是一款基于 Spring Boot Vue 的前后端分离企业级开发框架,集成了权限管理、代码生成、监控日志等核心功能,适用于快速构建中后台管理系统。以下是详细的使用指南…...
k8s-coredns-CrashLoopBackOff 工作不正常
本文作者: slience_me 问题描述 # 问题描述 # rootk8s-node1:/home/slienceme# kubectl get pods --all-namespaces # NAMESPACE NAME READY STATUS RESTARTS AGE # kube-flannel kube-flannel-ds-66bcs …...
【css酷炫效果】纯CSS实现粒子旋转动画
【css酷炫效果】纯CSS实现粒子旋转动画 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492008 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&…...
SQL 通配符
SQL 通配符 在SQL查询中,通配符是一种非常有用的特性,它允许用户在查询时使用特殊字符来匹配一系列的值。本文将详细介绍SQL中的通配符及其用法,帮助读者更好地理解如何在SQL查询中使用通配符。 1. 什么是通配符? 通配符是SQL查…...
【工具】C#防沉迷进程监控工具使用手册
一、软件简介 本工具用于监控指定进程的运行时长,当达到预设时间时通过声音、弹窗、窗口抖动等方式进行提醒,帮助用户合理控制程序使用时间。 软件在上篇文章。 二、系统要求 Windows 7/10/11.NET Framework 4.5 或更高版本 三、快速入门 1. 配置文件…...
4.数据结构-树和二叉树
树和二叉树 4.1树和二叉树的定义4.1.1树的定义4.1.2树的基本术语4.1.3二叉树的定义 4.2二叉树的性质和存储结构4.2.1二叉树的性质4.2.1二叉树的存储结构顺序存储链式存储 4.3遍历二叉树和线索二叉树4.3.1遍历二叉树根据遍历序确定二叉树先序序列创建二叉链表复制二叉树计算二叉…...
【工作记录】F12查看接口信息及postman中使用
可参考 详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)_f12查看接口及参数-CSDN博客 1、接口信息 接口基础知识2:http通信的组成_接口请求信息包括-CSDN博客 HTTP类型接口之请求&响应详解 - 三叔测试笔记…...
k8s搭建kube-prometheus
后续再补一个k8s集群搭建的博客,从0开始搭建k8s集群。使用kube-prometheus非常方便,主要问题只在于拉取镜像。除了拉取镜像外其他时间5分钟即可。耐心等待拉取镜像。 一.kube-prometheus简介 kube-prometheus 是一个专为 Kubernetes 设计的开源监控解决…...
Linux应用:Linux的信号
什么是信号 信号是一种软件中断,用于通知进程系统中发生了某种特定事件。它是操作系统与进程之间,以及进程与进程之间进行异步通信的一种方式。在 Linux 系统中,信号是一种比较简单的进程间通信机制。当一个信号产生时,内核会通过…...
C++特性——RAII、智能指针
RAII 就像new一个需要delete,fopen之后需要fclose,但这样会有隐形问题(忘记释放)。RAII即用对象把这个过程给包起来,对象构造的时候,new或者fopen,析构的时候delete. 为什么需要智能指针 对于…...
springboot项目,指定用alibaba连接池所需要的配置
1、依赖:引入相关的两个依赖 2、application.yml...
在本地跑通spark环境
官网下载spark 下载spark 解压就好 本地配置环境变量 配置环境变量(系统环境变量) 新增 SPARK_HOME 变量名:SPARK_HOME 变量值:F:\class\spark\Spark_env\spark-3.4.4-bin-hadoop3 配置 PATH,新增如下:…...
python-56-基于Vue和Flask进行前后端分离的项目开发示例实战
文章目录 1 创建Vue前端项目1.1 运行demo1.2 实现需求2 flask部署上述dist(前后端未分离)2.1 代码app.py2.2 运行访问3 nginx部署(前后端分离)3.1 nginx前端服务3.3.1 windows安装nginx3.3.2 修改nginx.conf配置文件3.3.3 启动nginx3.3.3 停止nginx3.2 启动后端服务3.2.1 app.p…...
云盘搭建笔记
报错问题: No input file specified. 伪静态 location / {if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last;break;} } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last; break; } } 设…...
学习C2CRS Ⅳ (Conversational Recommender Model)
C2CRS_Model C2CRS_Model 是一个用于对话推荐系统(Conversational Recommender System, C2CRS)的端到端模型。该模型结合了知识图谱(KG)、上下文信息、用户表示和对话生成等多个模块,以实现高效的推荐和对话功能。它通过以下模块实现: 用户表示模块(CoarseFineDRUserMo…...
【工具】huggingface 模型下载过程
前述 记录下自己下载模型的几种方式 方式 1、网页直接浏览器下载: 简单,但是随时可能断 2、git lfs # 拉代码 GIT_LFS_SKIP_SMUDGE1 git clone https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 # 进入目录 cd stable-diffusion-…...
空调遥控器低功耗单片机方案
RAMSUN空调遥控器采用先进的32位低功耗单片机作为核心控制器,通过优化软件算法和硬件设计,实现了空调遥控器的低功耗运行。单片机集成了多种功能模块,包括红外发射、按键扫描、电源管理等,有效降低了整体功耗。同时,该…...
K8S学习之基础三十五:k8s之Prometheus部署模式
Prometheus 有多种部署模式,适用于不同的场景和需求。以下是几种常见的部署模式: 1. 单节点部署 这是最简单的部署模式,适用于小型环境或测试环境。 特点: 单个 Prometheus 实例负责所有的数据采集、存储和查询。配置简单&…...
Agent toolkits集成指南
文章目录 CSV Agent的集成Pandas Dataframe Agent的集成PowerBI Dataset Agent的集成Agent toolkits的集成旨在简化并增强LLM应用中的数据处理和分析功能。CSVAgent提供了一个专门的工具,允许开发者处理CSV数据。Pandas Agent则集成了Pandas框架,赋予了开发者在应用中进行高效…...
蓝桥杯关于字符串的算法题目(leetcode回文串的判断问题)
文章目录 1.题目概述2.思路分析3.代码解析 1.题目概述 这个题目主要是需要我们找到回文串,这个回文实际上就是文学里面的这个修辞手法,在这个编程的时候:大概说的就是这个字符串从左向右个从右向左都是一样的这个效果,我们把这样…...
数据结构-----队列
顺序队列(Queue) 一、队列核心概念 1. 基本特性 先进先出(FIFO):最早入队的元素最先出队操作限制: 队尾(Rear):唯一允许插入的位置队头(Front)&…...
GitHub Copilot 在 VS Code 上的终极中文指南:从安装到高阶玩法
GitHub Copilot 在 VS Code 上的终极中文指南:从安装到高阶玩法 前言 GitHub Copilot 作为 AI 编程助手,正在彻底改变开发者的编码体验。本文将针对中文开发者,深度解析如何在 VS Code 中高效使用 Copilot,涵盖基础设置、中文优化…...
深入理解 RLP 编码与 JSON:原理、应用与比较
在区块链和数据存储领域,RLP(Recursive Length Prefix)编码和**JSON(JavaScript Object Notation)**是两种重要的数据编码方式。它们分别适用于不同的应用场景,并具有不同的优缺点。本文将系统性地分析 RLP…...
AI大白话(三):深度学习——AI的‘大脑‘是如何构建的?
🌟引言: 专栏:《AI大白话》 AI大白话(一):5分钟了解AI到底是什么? AI大白话(二):机器学习——AI是怎么“学习“的? 大家好!继前两篇介绍AI基础和机器学习的文章后,今天我们来聊聊深度学习——这个让AI技术近年来突飞猛进的"神奇引擎"。别担心,我会用…...
初识R语言饼状图
目录 基础饼图 标签个性化 边界修改 密度条纹 边框颜色 基础饼图 rm(list ls())# Create Data Prop <- c(3,7,9,1,2) # Make the default Pie Plot P1 <- pie(Prop) dev.off() 标签个性化 P2 <-pie(Prop , labels c("Gr-A","Gr-B","…...
[DeepRetrieval] 用DeepSeek-R1-Zero的思路教会模型怎么用搜索引擎找文本
前段时间很火的 DeepSeek-R1-Zero,通过这种方式既然能增强模型的推理能力,那是否可以在RAG的方面上增强文本的召回呢? 今天带来一篇关于这个方面工作的技术报告来分享一下。 技术报告: https://arxiv.org/pdf/2503.00223 原文链接…...
⭐算法OJ⭐二叉树的后序遍历【树的遍历】(C++实现)Binary Tree Postorder Traversal
⭐算法OJ⭐二叉树的中序遍历【树的遍历】(C实现)Binary Tree Inorder Traversal ⭐算法OJ⭐二叉树的前序遍历【树的遍历】(C实现)Binary Tree Preorder Traversal Given the root of a binary tree, return the postorder traver…...
【LeetCode 热题100】 234. 回文链表的算法思路及python代码
234. 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: 输入&…...
Grid布局示例代码
示例一 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Grid Layout Example</title><styl…...
【K8S】ImagePullBackOff状态问题排查。
ImagePullBackOff 是在使用 Kubernetes(K8s)时经常遇到的一种错误状态,下面为你详细介绍其含义、可能的原因及解决办法。 含义 当你在 K8s 集群中创建一个 Pod 时,Kubelet 会尝试从指定的镜像仓库拉取所需的容器镜像。如果拉取镜…...
在 Kubernetes(k8s)部署过程中常见的问题
在 Kubernetes(k8s)部署过程中,常见的问题主要包括以下几类,以下是具体示例及简要说明: 1. 资源配额不足(Resource Quota) 现象:Pod 处于 Pending 状态,事件日志显示 Insufficient CPU/Memory。 原因: 节点(Node)资源不足,无法满足 Pod 的 requests 或 limits。 命…...
微信小程序状态管理与计算属性同时使用:miniprogram-computed 和 mobx-miniprogram
两个框架扩展提供的 ComponentWithStore 与 ComponentWithComputed 方法无法结合使用。如果需要在一个组件中既想使用 mobx-miniprogram-bindings 又想使用 miniprogram-computed解决方案是: 使用旧版 API 自定义组件仍然使用 Component 方法构建组件,将…...
Redis设置开机自启报错start-limit-hit
Redis设置开机自启报错start-limit-hit 问题:在银河麒麟服务器上编译安装了redis后设置systemctl开机自启报错start-limit-hit 如何解决? 因为开机自启的需求是后面新增的,所以一开始使用的是命令启动,使用命令启动就会直接在前台…...
[数据结构]排序之 归并排序(有详细的递归图解)
一、非递归 基本思想: 归并排序( MERGE-SORT )是建立在归并操作上的一种有效的排序算法 , 该算法是采用分治法( Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列&#x…...
pdf文件分页按需查看
pdf预览本来打算粗暴点,一次性查看全部,但是一个pdf四五百页导致手机端查看超出内存直接崩掉,崩掉会导致页面疯狂刷新,所以不得不进行优化 解决思路大致如下: canvas转为blob格式以图片的形式加载在页面(B…...
栈/堆/static/虚表
在 C 里,栈空间主要用来存放局部变量、函数调用信息等。下面为你介绍栈空间在 C 里的运用方式。 1. 局部变量的使用 在函数内部定义的变量会被存于栈空间,当函数执行结束,这些变量会自动被销毁。 #include <iostream>void exampleFu…...