AI时代新爬虫:网站自动转LLM数据,firecrawl深度玩法解读
在大模型的时代,爬虫技术也有了很多新的发展,最近出现了专门针对大模型来提取网站信息的爬虫,一键将网页内容转换为LLM-ready的数据。今天我们介绍其中的开源热门代表:firecrawl。
firecrawl 是什么
FireCrawl是一款创新的爬虫工具,它能够无需站点地图,抓取任何网站的所有可访问子页面。与传统爬虫工具相比,FireCrawl特别擅长处理使用JavaScript动态生成内容的网站,并且可以转换为LLM-ready的数据。
此外,它还提供了一个易于使用的API,让开发者能够轻松实现内容的爬取和转换。
可以先通过FireCrawl 提供的playground来快速体验下。
最简单的情况下,只需要填一个URL就可以,firecrawl会抓取到相关的内容,还可以通过LLM来提取信息。使用firecrawl的在线服务是需要付费的,免费的只有500credit,所以接下来我们看下如何自己本地运行。
本地运行
项目的介绍中说了,目前还在早期阶段,不建议自己部署,如果想要跑可以源码启动。首先需要准备本地的环境:
nodejs“pnpm“Redis
1
然后在 /apps/api/ 下建一个 .env文件,可以从.env.example拷贝一个,.env.example中包括了项目可以使用的各种配置,内容很多。如果只是本地最简单运行的话,内容参考如下:
# ===== Required ENVS ======“NUM_WORKERS_PER_QUEUE=8“PORT=3002“HOST=0.0.0.0“REDIS_URL=redis://localhost:6379“ “## To turn on DB authentication, you need to set up supabase.“USE_DB_AUTHENTICATION=false
1
之后就是安装依赖。
pnpm install
1
接下来启动项目,这里启动需要涉及3个部分的内容。
启动Redis,在项目目录下打开一个终端,之后启动Redis即可
redis-server
1
启动worker,worker是具体执行爬虫任务的,在项目的 /apps/api/ 路径下,执行命令:
pnpm run workers
1
启动主服务,还是在项目的 /apps/api/ 路径下,执行命令
pnpm run start
1
到这里我们就在本地运行了firecrawl,可以向3002端口发个请求来确认服务已经运行
curl -X GET <http://localhost:3002/test>
1
也可以访问 http://0.0.0.0:3002/admin//queues ,查看firecrawl的管理后台。
使用 firecrawl
部署好了之后,我们就来详细看下如何使用吧。
scrape
首先我们可以通过REST API的方式向firecrawl发送指令,我们首先可以使用 /scrape 这个API来抓取一下他们自己公司的网站,使用如以下curl命令:
curl -X POST <https://api.firecrawl.dev/v0/scrape> \\` `-H ‘Content-Type: application/json’ \\` `-d ‘{` `”url”: “<https://mendable.ai>”` `}’
1
当然也可以通过各种API工具来发送,使用体验会更好一些。
crawl
除了单个网页的抓取,firecrawl还可以抓取多个页面,使用/crawl API ,您给出要抓取的基本 URL,所有可访问的子页面都将被抓取。
curl -X POST <https://api.firecrawl.dev/v0/crawl> \\` `-H ‘Content-Type: application/json’ \\` `-d ‘{` `”url”: “<https://mendable.ai>”,` `”pageOptions”: {` `”onlyMainContent”: true,` `”includeHtml”: true,` `”screenshot”: true,` `”waitFor”: 5000` `},` `”crawlerOptions”: {` `”includes”: [“/blog/*”, “/products/*”],` `”maxDepth”: 3,` `”mode”: “fast”,` `}` `}’
1
在此示例中,爬虫将完成以下功能:
仅抓取与模式/blog/*,/products/*和匹配的 URL。
跳过与模式/admin/* ,/login/*和匹配的 URL。
返回每页的完整文档数据。
爬行至最大深度 3。
使用快速抓取模式。
最多抓取 1000 个页面。
/crawl 不会直接返回结果,发送命令后会返回对应任务的JobID,之后的任务是会在后台执行,可以在前面展示过的管理后台里查看任务的运行情况。
关于API的所有参数选项,可以到文档中查看。
结合大模型
首先 firecrawl 支持对抓取的内容进行大模型提取,利用大模型的能力,直接将抓取结果按预期进行格式化处理。如果想使用这个能力,首先要在.env里配置对应的API KEY。
我们在抓取的命令里,加入extractorOptions,参考如下:
“extractorOptions”: {` `”mode”: “llm-extraction”,` `”extractionPrompt”: “Based on the information on the page, extract the information from the schema. “,` `”extractionSchema”: {` `”type”: “object”,` `”properties”: {` `”company_mission”: {` `”type”: “string”` `},` `”supports_sso”: {` `”type”: “boolean”` `},` `”is_open_source”: {` `”type”: “boolean”` `},` `”is_in_yc”: {` `”type”: “boolean”` `}` `},` `”required”: [` `”company_mission”,` `”supports_sso”,` `”is_open_source”,` `”is_in_yc”` `]` `}` `}
1
这样再次执行后,可以看到结果的最后就会有提取的内容。
通过代码使用
除了这种方式以外,还可以通过代码的方式来使用firecrawl,目前支持
Python SDK
Node SDK
Langchain Integration 🦜🔗
Llama Index Integration 🦙
Langchain JS Integration 🦜🔗
使用代码的方式会有更多的灵活性,可以更加方便的和自己的程序集成起来。下面是一个简单的例子,我用node sdk为例,先要安装:
npm install @mendable/firecrawl-js
1
然后就可以在代码中使用了
const crawlUrl = ‘<https://example.com>’;“const params = {` `crawlerOptions: {` `excludes: [‘blog/’],` `includes: [], // leave empty for all pages` `limit: 1000,` `},` `pageOptions: {` `onlyMainContent: true` `}“};“const waitUntilDone = true;“const timeout = 5;“const crawlResult = await app.crawlUrl(` `crawlUrl,` `params,` `waitUntilDone,` `timeout“);
1
这里需要说的,默认情况下,官方的SDK中使用的是https://api.firecrawl.dev/ 的在线服务,如果你觉得没问题,那需要去网站上申请API key。
如果你想要使用自己本地启动的服务,那需要自己去修改一下SDK的实现,相关的代码在项目中都开了,大概在这里。
自己把相关内容修改一下,然后自己使用就可以了。
举个栗子
另外还有一些比较不错的玩法,比如使用 firecrawl 的 /search API来信息收集,之后快速转换成LLM-ready的数据。
首先 search的内容大概是这样的。
import FirecrawlApp from ‘@mendable/firecrawl-js’;“ “//这里的API key根据自己需要了“const app = new FirecrawlApp({ apiKey: ‘YOUR_API_KEY’ });“const params = {` `searchOptions: {` `limit: 5,` `},` `pageOptions: {` `fetchPageContent: false` `}` `};“ “// Perform a search“const result = await app.search(‘What is firecrawl?’);
1
会拿到类似这样一个结果。
剩下就不一步步实现了接下来就简单说下思路:
我们可以针对返回的结果,再对每一个URL使用 /scrape
配置参数用上之前的llm-extraction,就可以对每一个结果抓取数据并提炼内容
再把提炼的结果存下来,比如存到存到向量数据库中
接下来这就可以作为LLM的辅助信息来使用了
总结
整体来说firecrawl的可玩性确实非常高,在AI和大模型的时代,给爬虫这个传统工具提供了一个非常有意思的新发展思路。如果你也感兴趣,可以自己动手来玩一玩,还是很有意思的。
项目信息
项目名称:firecrawl
GitHub 链接:https://github.com/mendableai/firecrawl
Star 数:5K
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
数据统计
数据评估
关于Firecrawl特别声明
本站哆咪虾提供的Firecrawl都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由哆咪虾实际控制,在2024-09-04 下午1:36收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,哆咪虾不承担任何责任。
相关导航
Wiseflow is an agile information mining tool that extracts concise messages from various sources such as websites, WeChat official accounts, social platforms, etc. It automatically categorizes and uploads them to the database.
v0.dev
v0.dev是由Vercel推出的一款AI工具,专门用于生成网页用户界面的代码。它基于流行的UI框架Shadcn UI和Tailwind CSS,能够自动生成React组件代码。
暂无评论...