专栏名称: Python中文社区
致力于成为国内最好的Python开发者学习交流平台,这里有关于Python的国内外最新消息,每日推送有趣有料的技术干货和社区动态。 官方网站:www.python-cn.com
目录
相关文章推荐
Python开发者  ·  o3-mini 碾压 DeepSeek ... ·  3 天前  
Python爱好者社区  ·  推荐我的抖音变现俱乐部! ·  2 天前  
Python爱好者社区  ·  张雪峰公司今年的年终奖... ·  2 天前  
Python爱好者社区  ·  推荐我的抖音变现俱乐部! ·  4 天前  
Python爱好者社区  ·  120道Python面试题.pdf ... ·  5 天前  
51好读  ›  专栏  ›  Python中文社区

用AI高效驱动爬虫:Firecrawl 和 LangChain 的完美结合

Python中文社区  · 公众号  · Python  · 2024-12-10 08:06

正文

大家好,我是橙哥!网络爬虫技术因其在数据抓取和分析方面的强大功能而广泛应用于各种业务场景中。如何高效地抓取、处理和分析互联网上的数据,在众多领域尤其金融科技中是一个关键的需求。然而,传统爬虫的功能和效率常常受限于规则的简单性和处理能力。随着AI技术的飞速发展,结合 AI 的网络爬虫可以大幅提升数据抓取的智能化程度,使得爬虫不仅仅是数据采集工具,还能进行更深层次的分析和处理

本文将介绍如何通过 FirecrawlLangChain 两个工具,结合 AI 技术,构建一个智能的网络爬虫,帮助开发者更高效地抓取和分析数据。

一、Firecrawl:智能化的网络爬虫平台

Firecrawl 是一款基于 AI 的网络爬虫平台,支持对各种网站进行高效的数据抓取。通过简洁的 API 和配置,开发者可以快速启动爬虫任务,并获得结构化的爬取数据。

1. 环境配置与初始化

在使用 Firecrawl 前,我们需要先设置好环境变量,配置 API 密钥,以便进行身份验证。

export FIRECRAWL_API_KEY='fc-YOUR-KEY-HERE'
touch .envecho "FIRECRAWL_API_KEY='fc-YOUR-KEY-HERE'" >> .env
然后,使用 Python 加载环境变量并初始化 Firecrawl 应用:
from firecrawl import FirecrawlAppfrom dotenv import load_dotenv
load_dotenv()app = FirecrawlApp()

2. 爬取网站数据

我们可以使用 Firecrawl 的 crawl_url 方法来抓取目标网站的数据。

例如,爬取 https://books.toscrape.com/ 网站的书籍信息:

base_url = "https://books.toscrape.com/"crawl_result = app.crawl_url(url=base_url)

获取爬取结果后,你可以查看抓取状态和总页数:

print(crawl_result['status'])  # 'completed'print(crawl_result['total'])   # 1195

如果需要查看某一页的内容,可以直接访问 data 字段:

sample_page = crawl_result['data'][10]markdown_content = sample_page['markdown']print(markdown_content[:500])  # 输出前500个字符

二、LangChain:构建基于 AI 的问答系统

爬取到的数据往往不止于保存,如何智能化地处理这些数据并从中获取有价值的信息,成为了提升爬虫系统实用性的关键。LangChain 是一个强大的框架,它能够帮助你将 AI 模型与爬取的数据结合,实现智能问答和文档处理

1. 安装 LangChain

首先,需要安装 LangChain 及其相关依赖,来处理爬取的数据并构建问答系统:

pip install langchain langchain_community langchain_anthropic langchain_openai

2. 使用 LangChain 处理爬取数据

假设我们已经爬取了文档数据,下一步是利用 LangChain 进行智能化的文本处理。例如,我们可以使用 FireCrawlLoader 加载 Firecrawl 爬取的数据,并利用 RecursiveCharacterTextSplitter 对数据进行分割。

from dotenv import load_dotenvfrom langchain_community.document_loaders.firecrawl import FireCrawlLoader
load_dotenv()
loader = FireCrawlLoader( url="https://python.langchain.com/docs/integrations/providers/", mode="crawl", params={"limit": 5, "scrapeOptions": {"onlyMainContent": True}},)
docs = loader.load()

然后,使用 RecursiveCharacterTextSplitter 对文档进行切分,以适应后续的处理:

from langchain.text_splitters import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)split_docs = text_splitter.split_documents(docs)

3. 创建向量存储与问答系统

接下来,使用 AI 模型(如 OpenAI 提供的 Embedding 模型)将文档内容转化为向量,并通过 LangChain 创建一个基于检索的问答系统。
from langchain_chroma import Chromafrom langchain.embeddings import OpenAIEmbeddingsfrom langchain_chains import RetrievalQAfrom langchain_anthropic import ChatAnthropic
embeddings = OpenAIEmbeddings()vector_store = Chroma.from_documents(split_docs, embeddings)
llm = ChatAnthropic





请到「今天看啥」查看全文