🌟 项目目标
开发一个智能机器人,每天自动完成:
- 全网抓取最新AI资讯
- 智能筛选高价值内容(技术突破/行业趋势/创新应用)
- 自动生成精美Markdown日报
- 定时推送到企业微信(支持多群同步)
🛠️ 核心实现模块
1. 智能网络爬虫系统
# 使用 crawl4ai 的异步爬虫配置
asyncdef async_crawl(url: str, crawler: AsyncWebCrawler):
"""异步爬取单个网站"""
try:
result = await crawler.arun(
url=url,
config=CrawlerRunConfig(
extraction_strategy=LLMExtractionStrategy(
provider="openai/gpt-4o",
api_token=api_key,
base_url=base_url,
schema=Article.model_json_schema(),
extraction_type="schema",
input_format="markdown",
instruction=f"从网页内容中提取{date}的10条高质量AI资讯,包含'发布时间'、'标题'、'链接'、和'摘要',筛选标准:1.技术突破 2.行业趋势 3.创新应用"
),
cache_mode=CacheMode.BYPASS
)
)
return result
except Exception as e:
print(f"⚠️ 爬取 {url} 时出错: {str(e)}")
returnNone
crawl4ai 核心功能:
- 🕸️ 智能反爬机制:自动处理验证码、IP封锁等常见反爬措施
- 🌐 无头浏览器:支持JavaScript渲染的动态网页抓取
- 🧠 内置LLM:直接使用大模型进行内容理解和提取
- ⚡ 异步并发:单机支持每秒处理50+网页
2. 智能内容处理引擎
class Article(BaseModel):
""" 结构化数据模型 """
title: str = Field(..., max_length=100, description="文章标题")
link: str = Field(..., description="带编码的完整文章链接")
summary: str = Field(..., max_length=50, description="AI生成的精准摘要")
release_time: str | None = Field(default=None)
数据处理
sorted_articles = sorted(
all_articles,
key=lambda x: x['release_time'] if x['release_time'] else "0000-00-00",
reverse=True
)[:30] # 取最新30条
3. 自适应内容分片系统
# 分片算法(解决企业微信4096字节限制)
MAX_CONTENT = 4096
current_length = len(header.encode('utf-8')) # 精确字节计算
for article in sorted_articles:
# 生成带Markdown格式的内容块
section = f"### 🔥 [{title}]({encoded_link})\n📌 {summary[:50]}..."
section_bytes = len(section.encode('utf-8'))
# 动态分片逻辑
if current_length + section_bytes > MAX_CONTENT:
chunks.append(current_chunk)
current_chunk = []
current_length = header_bytes
current_chunk.append(section)
current_length += section_bytes
4. 多渠道推送模块
# 支持多机器人并行推送
for robot_url in RobotList:
response = request("POST", robot_url, json={
"msgtype": "markdown",
"markdown": {
"content": f"{header}\n{content}".strip()[:4096] # 严格长度控制
}
})
print(f"推送状态:{response.status_code}")
🚀 快速部署指南
环境准备
pip install crawl4ai
crawl4ai-setup # 设置浏览器
配置文件 (.env)
# 新闻源配置(支持多个网站)
AI_NEWS_SOURCES = [
"https://www.aibase.com/zh/news",
"https://top.aibase.com"
]
# 企业微信机器人列表
RobotList = [
""
]
📊 效果展示
💡 项目亮点
- 智能过滤
结合规则引擎+LLM语义分析,准确率>92%
- 高效处理
异步架构支持每秒处理50+网页
- 灵活分片
自适应算法完美适配企业微信限制
- 易于扩展
支持快速添加新数据源和推送渠道
🌈 技术总结
通过本项目,我们实现了:
使用
crawl4ai
完成智能爬取(支持动态网页/反爬绕过)- 结合 GPT-4 进行内容理解和结构化提取
- 企业微信机器人无缝对接(支持Markdown富文本)
- 全流程自动化运行(从数据采集到推送)