整个网站转变为适用于大模型训练的 Markdown 或结构化数据。使用单个 API 进行抓取、爬行、搜索和提取。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Hello,大家好,我是Aitrainee。今天给大家介绍一下Firecrawl,这是一个实用的爬虫工具。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 1.5px;text-shadow: rgb(123, 123, 123) 0px 0px;line-height: 1.75;color: rgb(0, 152, 116);">
1.Firecrawl会自动从你给定的网页开始,遍历网站上的所有链接,爬取所有能访问的页面。
2.它会去除杂乱信息,提取有用的数据并整理好。
3.无需站点地图,Firecrawl也能找到并爬取所有页面。
油管博主:开发者文稿 / 字幕译:Aitrainee,链接在这里:
https://www.youtube.com/watch?v=fDSM7chMo5E
下面提供官方的文档介绍、相关资源、部署教程等,进一步支撑你的行动,以提升本文的帮助力。
我们提供了易于使用的API托管版本。您可以在这里找到演示和文档。您也可以自行托管后台服务。
•API
•Python SDK
•Node SDK
•Langchain集成 ??
•Llama Index集成 ?
•Langchain JS集成 ??
•想要其他SDK或集成?请通过打开issue告知我们。
要在本地运行,请参考指南。
要使用API,您需要在Firecrawl注册并获取API密钥。
用于爬取一个URL及其所有可访问的子页面。此操作提交一个爬取任务并返回一个作业ID以检查爬取状态。
curl-XPOSThttps://api.firecrawl.dev/v0/crawl\
-H'Content-Type:application/json'\
-H'Authorization:BearerYOUR_API_KEY'\
-d'{
"url":"https://mendable.ai"
}'返回一个作业ID
{"jobId":"1234-5678-9101"}用于检查爬取作业的状态并获取其结果。
curl-XGEThttps://api.firecrawl.dev/v0/crawl/status/1234-5678-9101\
-H'Content-Type:application/json'\
-H'Authorization:BearerYOUR_API_KEY'{
"status":"completed",
"current":22,
"total":22,
"data":[
{
"content":"RawContent",
"markdown":"#MarkdownContent",
"provider":"web-scraper",
"metadata":{
"title":"Mendable|AIforCXandSales",
"description":"AIforCXandSales",
"language":null,
"sourceURL":"https://www.mendable.ai/"
}
}
]
}用于爬取一个URL并获取其内容。
curl-XPOSThttps://api.firecrawl.dev/v0/scrape\
-H'Content-Type:application/json'\
-H'Authorization:BearerYOUR_API_KEY'\
-d'{
"url":"https://mendable.ai"
}'响应:
{
"success":true,
"data":{
"content":"RawContent",
"markdown":"#MarkdownContent",
"provider":"web-scraper",
"metadata":{
"title":"Mendable|AIforCXandSales",
"description":"AIforCXandSales",
"language":null,
"sourceURL":"https://www.mendable.ai/"
}
}
}用于搜索网络,获取最相关的结果,爬取每个页面并返回Markdown格式的数据。
curl-XPOSThttps://api.firecrawl.dev/v0/search\
-H'Content-Type:application/json'\
-H'Authorization:BearerYOUR_API_KEY'\
-d'{
"query":"firecrawl",
"pageOptions":{
"fetchPageContent":true//设置为false可快速获取搜索引擎结果页面
}
}'{
"success":true,
"data":[
{
"url":"https://mendable.ai",
"markdown":"#MarkdownContent",
"provider":"web-scraper",
"metadata":{
"title":"Mendable|AIforCXandSales",
"description":"AIforCXandSales",
"language":null,
"sourceURL":"https://www.mendable.ai/"
}
}
]
}用于从爬取的页面中提取结构化数据。
curl-XPOSThttps://api.firecrawl.dev/v0/scrape\
-H'Content-Type:application/json'\
-H'Authorization:BearerYOUR_API_KEY'\
-d'{
"url":"https://www.mendable.ai/",
"extractorOptions":{
"mode":"llm-extraction",
"extractionPrompt":"Basedontheinformationonthepage,extracttheinformationfromtheschema.",
"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"
]
}
}
}'{
"success":true,
"data":{
"content":"RawContent",
"metadata":{
"title":"Mendable",
"description":"MendableallowsyoutoeasilybuildAIchatapplications.Ingest,customize,thendeploywithonelineofcodeanywhereyouwant.BroughttoyoubySideGuide",
"robots":"follow,index",
"ogTitle":"Mendable",
"ogDescription":"MendableallowsyoutoeasilybuildAIchatapplications.Ingest,customize,thendeploywithonelineofcodeanywhereyouwant.BroughttoyoubySideGuide",
"ogUrl":"https://mendable.ai/",
"ogImage":"https://mendable.ai/mendable_new_og1.png",
"ogLocaleAlternate":[],
"ogSiteName":"Mendable",
"sourceURL":"https://mendable.ai/"
},
"llm_extraction":{
"company_mission":"TrainasecureAIonyourtechnicalresourcesthatanswerscustomerandemployeequestionssoyourteamdoesn'thaveto",
"supports_sso":true,
"is_open_source":false,
"is_in_yc":true
}
}
}pipinstallfirecrawl-py
fromfirecrawlimportFirecrawlApp
app=FirecrawlApp(api_key="YOUR_API_KEY")
crawl_result=app.crawl_url('mendable.ai',{'crawlerOptions':{'excludes':['blog/*']}})
#获取Markdown内容
forresultincrawl_result:
print(result['markdown'])要爬取单个URL,请使用scrape_url方法。它接收URL作为参数并返回爬取的数据字典。
url='https://example.com'
scraped_data=app.scrape_url(url)通过LLM提取,您可以轻松地从任何URL中提取结构化数据。我们支持Pydantic模型,使其更容易使用。以下是使用方法:
classArticleSchema(BaseModel):
title:str
points:int
by:str
commentsURL:str
classTopArticlesSchema(BaseModel):
top
ist[ArticleSchema]=Field(...,max_items=5,description="Top5
stories")
data=app.scrape_url('https://news.ycombinator.com',{
'extractorOptions':{
'extractionSchema':TopArticlesSchema.model_json_schema(),
'mode':'llm-extraction'
},
'pageOptions':{
'onlyMainContent':True
}
})
print(data["llm_extraction"])执行网络搜索,获取顶级结果,提取每个页面的数据,并返回它们的Markdown格式内容。
query='WhatisMendable?'
search_result=app.search(query)要安装Firecrawl Node SDK,可以使用npm:
npminstall@mendable/firecrawl-js
1.从firecrawl.dev获取API密钥。
2.将API密钥设置为环境变量FIRECRAWL_API_KEY,或将其作为参数传递给FirecrawlApp类。
要爬取单个URL并进行错误处理,请使用scrapeUrl方法。它接收URL作为参数并返回爬取的数据字典。
try{
consturl='https://example.com';
constscrapedData=awaitapp.scrapeUrl(url);
console.log(scrapedData);
}catch(error){
console.error(
'Erroroccurredwhilescraping:',
error.message
);
}要爬取网站并进行错误处理,请使用crawlUrl方法。它接收起始URL和可选参数作为参数。params参数允许您指定爬取任务的附加选项,例如最大爬取页面数、允许的域和输出格式。
constcrawlUrl='https://example.com';
constparams={
crawlerOptions:{
excludes:['blog/'],
includes:[],//留空以包含所有页面
limit:1000,
},
pageOptions:{
onlyMainContent:true
}
};
constwaitUntilDone=true;
consttimeout=5;
constcrawlResult=awaitapp.crawlUrl(
crawlUrl,
params,
waitUntilDone,
timeout
);要检查爬取任务的状态并进行错误处理,请使用checkCrawlStatus方法。它接收作业ID作为参数并返回爬取任务的当前状态。
conststatus=awaitapp.checkCrawlStatus(jobId);
console.log(status);通过LLM提取,您可以轻松地从任何URL中提取结构化数据。我们支持zod模式,使其更容易使用。以下是使用方法:
importFirecrawlAppfrom"@mendable/firecrawl-js";
import{z}from"zod";
constapp=newFirecrawlApp({
apiKey:"fc-YOUR_API_KEY",
});
//定义要提取内容的模式
constschema=z.object({
top:z
.array(
z.object({
title:z.string(),
points:z.number(),
by:z.string(),
commentsURL:z.string(),
})
)
.length(5)
.describe("HackerNews上的前5个故事"),
});
constscrapeResult=awaitapp.scrapeUrl("https://news.ycombinator.com",{
extractorOptions:{extractionSchema:schema},
});
console.log(scrapeResult.data["llm_extraction"]);通过search方法,您可以在搜索引擎中搜索查询并获取顶级结果及每个结果的页面内容。该方法接收查询作为参数并返回搜索结果。
constquery='whatismendable?';
constsearchResults=awaitapp.search(query,{
pageOptions:{
fetchPageContent:true//获取每个搜索结果的页面内容
}
});参考链接:
[1]https://github.com/mendableai/firecrawl
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |