Crawl4AI/DeepSeek构建AI爬虫
在这篇指南中,我将向你展示如何使用Crawl4AI和DeepSeek构建一个AI驱动的爬虫。Crawl4AI是一个灵活的开源抓取工具,与AI模型一起工作。DeepSeek是一个强大的AI模型,可以从无结构的网页中提取结构化数据。结合这两个工具将创建一个可以智能导航网站并提取干净、有序数据的爬虫——毫不费力!
1、什么是Crawl4AI?
Crawl4AI是一个为大型语言模型(LLMs)设计的开源、AI就绪的网络爬虫。与传统的爬虫不同,它不依赖固定的HTML解析规则。相反,它可以使用像DeepSeek这样的AI模型来提取结构化数据。
Crawl4AI的特点:
- 专为LLMs设计:它生成的数据优化用于AI训练和检索增强生成(RAG)。
- 智能浏览器控制:它管理浏览器会话、代理和自定义钩子。
- AI驱动的解析:使用启发式智能提取结构化信息。
- 开源:无需API密钥;可以在Docker和云平台上部署。
2、为什么使用DeepSeek与Crawl4AI?
DeepSeek是一个先进的开源AI模型,能够高效处理文本。当与Crawl4AI结合时,它允许动态内容提取而无需硬编码解析规则。这在以下情况下特别有用:
- 结构频繁变化的站点:AI可以自动适应新的布局。
- 提取非结构化内容:AI模型可以分析自由文本、博客文章或客户评论。
- 处理不同的页面格式:许多网站使用多种模板来呈现其内容,传统爬虫难以管理这些。
3、设置项目
首先,创建一个新的项目目录并设置虚拟环境。
mkdir ai-scraper
cd ai-scraper
python -m venv venv
激活虚拟环境:
对于macOS/Linux:
source venv/bin/activate
对于Windows:
venv\Scripts\activate
4、安装Crawl4AI
使用pip安装Crawl4AI及其依赖项:
pip install crawl4ai
运行设置命令以安装Playwright浏览器和缓存数据库:
crawl4ai-setup
此命令安装Playwright浏览器并设置缓存。
5、创建爬虫文件
在项目文件夹内创建一个名为scraper.py的新文件。
touch scraper.py
在文本编辑器中打开scraper.py并添加基本的异步结构:
import asyncio
async def main():
# 爬虫逻辑将在这里
pass
if __name__ == "__main__":
asyncio.run(main())
6、配置爬虫
在scraper.py中导入必要的Crawl4AI组件:
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode
定义一个基本的网页抓取函数:
async def main():
# 浏览器设置
browser_config = BrowserConfig(headless=True)
# 爬虫设置
crawler_config = CrawlerRunConfig(cache_mode=CacheMode.BYPASS)
# 初始化并运行AI驱动的爬虫
async with AsyncWebCrawler(config=browser_config) as crawler:
result = await crawler.arun(url="https://www.example.com", config=crawler_config)
# 显示提取的数据
print(f"提取的数据:\n{result.markdown[:1000]}")
7、处理网站限制
一些网站通过检测类似机器人行为来阻止爬虫。如果您的请求收到403禁止错误,则意味着该站点已阻止您的爬虫。
要绕过限制,我们可以使用Bright Data的Web Unlocker API。此服务会自动处理代理轮换和CAPTCHA解决。
设置Web Unlocker API:
- 创建一个Bright Data帐户。
- 在仪表板中导航到Proxies & Scraping。
- 激活Web Unlocker API。
- 复制代理凭据并存储在.env文件中:
PROXY_SERVER=https://proxy.brightdata.com:22225
PROXY_USERNAME=your_username
PROXY_PASSWORD=your_password
将代理集成到爬虫中。
修改scraper.py以使用代理设置:
import os
from dotenv import load_dotenv
load_dotenv()
# 代理配置
proxy_config = {
"server": os.getenv("PROXY_SERVER"),
"username": os.getenv("PROXY_USERNAME"),
"password": os.getenv("PROXY_PASSWORD")
}
browser_config = BrowserConfig(headless=True, proxy_config=proxy_config)
现在,爬虫将通过Bright Data的网络路由流量以避免被检测到。
在规模上处理站点限制
随着您的爬虫变得更加复杂,您可能会遇到常见的挑战,如IP封锁、CAPTCHA或JavaScript密集型页面。为了保持爬虫平稳运行,可以考虑使用提供代理轮换、浏览器仿真和自动绕过反机器人系统的工具。
例如,集成带有内置CAPTCHA处理的基于代理的解决方案可以帮助您保持对受保护最严格的网站的访问。这确保了您的AI驱动的爬虫在广泛的范围内保持可靠性和可扩展性。我的机构主要使用Bright Data的产品进行网络爬取。
8、使用DeepSeek进行AI数据提取
我们需要DeepSeek,这是一个理解并结构化数据的AI模型,以便提取有意义的信息。
获取Groq API密钥:
- 在GroqCloud上注册。
- 在API Keys下创建一个API密钥。
- 将其存储在您的.env文件中:
LLM_API_TOKEN=your_groq_api_key
LLM_MODEL=groq/deepseek-r1-distill-llama-70b
定义提取模式:
创建一个models/目录并在其中创建一个名为models/data_schema.py的文件:
from pydantic import BaseModel
class ExtractedData(BaseModel):
title: str
description: str
image_url: str
使用DeepSeek进行AI解析
修改scraper.py以包含AI驱动的提取:
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from models.data_schema import ExtractedData
extraction_strategy = LLMExtractionStrategy(
provider=os.getenv("LLM_MODEL"),
api_token=os.getenv("LLM_API_TOKEN"),
schema=ExtractedData.model_json_schema(),
extraction_type="schema",
instruction="从内容中提取标题、描述和图像URL。",
input_format="markdown"
)
crawler_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
extraction_strategy=extraction_strategy
)
现在,AI模型将分析页面内容并自动结构化数据。
9、保存提取的数据
修改scraper.py以将提取的数据保存为JSON文件:
import json
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result = await crawler.arun(url="https://www.example.com", config=crawler_config)
# 解析AI提取的数据
extracted_data = json.loads(result.extracted_content)
# 保存为JSON
with open("output.json", "w", encoding="utf-8") as f:
json.dump(extracted_data, f, indent=4)
if __name__ == "__main__":
asyncio.run(main())
10、运行爬虫
运行爬虫:
python scraper.py
这将:
- 从网站提取数据。
- 使用AI结构化内容。
- 将数据保存到JSON文件中。
所以,我们刚刚使用Crawl4AI和DeepSeek构建了一个AI驱动的网络爬虫。与普通的爬虫不同,这个爬虫更聪明、更灵活。它可以适应网站的变化,绕过反机器人保护,并提取数据而无需复杂的解析规则。
11、结束语
有了这个设置,您可以轻松抓取甚至是最受保护的网站。不再每次网站更新时都会破坏爬虫!现在,您拥有了一种强大工具,使网络爬取更快、更智能、更可靠。
去尝试一下不同的网站吧。祝您编程愉快,抓取愉快!
原文链接:How to Build an AI Scraper With Crawl4AI and DeepSeek
汇智网翻译整理,转载请标明出处