当前位置: 首页 > java >正文

生成式AI驱动的智能采集实战

爬虫代理

项目背景

在当前内容驱动的应用生态中,实时获取新闻资讯成为舆情分析、行业追踪和自动写作系统的基础能力。然而传统采集方案在面对动态结构、反爬机制和接口变动时效率低下、维护成本高。

本项目以“今日头条”站内搜索为目标,设计一套结合生成式AI策略 + 爬虫代理 + 用户模拟行为 + 自动摘要生成的智能采集方案,实现对指定关键词的前10条新闻标题、作者、发布时间、正文内容的提取与分类存储,并生成AI摘要,帮助开发者构建更鲁棒的采集系统。


错误示例:传统采集“蛮力”访问,代理配置缺失

import requestsdef wrong_toutiao_search(keyword):url = f'https://www.toutiao.com/search_content/?keyword={keyword}'response = requests.get(url)return response.textprint(wrong_toutiao_search('人工智能'))

问题分析:

  • 无代理,极易触发IP封锁;
  • 未设置User-Agent等信息,请求头暴露爬虫特征;
  • 接口参数错误,目标接口并非搜索入口;
  • 无结构化解析与分类存储。

正确姿势:生成式AI辅助构建智能请求,提升反爬稳定性

模拟生成式AI策略:

  1. 自动构造头部参数组合;
  2. 智能代理池切换;
  3. 解析HTML结构中隐藏字段,确保数据完整性;
  4. 提取信息 → 分类存储 → AI自动生成摘要。

完整代码实现(含摘要功能)

import requests
from bs4 import BeautifulSoup
import random
import time
import json
import os
from collections import defaultdict# ========== 亿牛云代理配置 www.16yun.cn==========
proxy_host = "proxy.16yun.cn" # 替换为你的亿牛云代理域名
proxy_port = "3100"  # 替换为你的亿牛云代理端口
proxy_user = "16IP"  # 替换为你的亿牛云代理用户名
proxy_pass = "16YUN"  # 替换为你的亿牛云代理密码proxies = {"http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}","https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
}# ========== 自定义headers ==========
headers = {"User-Agent": random.choice(["Mozilla/5.0 (Windows NT 10.0; Win64; x64)","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)","Mozilla/5.0 (X11; Ubuntu; Linux x86_64)"]),"Cookie": "tt_webid=1234567890abcdef;"  # 可按需模拟登录后的cookie
}# ========== 模拟生成式AI进行摘要生成 ==========
def generate_summary(text, model="local"):prompt = f"请用中文总结以下新闻内容,不超过100字:\n\n{text.strip()}\n\n摘要:"if model == "local":return fake_llm_response(prompt)return "摘要生成失败"def fake_llm_response(prompt):return "本文报道了人工智能在多个行业中的新趋势,涉及教育、医疗等场景的实际应用。"# ========== 新闻抓取 + 摘要生成 ==========
def search_and_summarize(keyword):search_url = f"https://www.toutiao.com/search/?keyword={keyword}"response = requests.get(search_url, headers=headers, proxies=proxies, timeout=10)soup = BeautifulSoup(response.text, "html.parser")results = []for idx, article in enumerate(soup.select("div[data-click-log]")[:10]):try:title = article.select_one('a').text.strip()relative_url = article.select_one('a')['href']url = 'https://www.toutiao.com' + relative_urlauthor = article.select_one('.lbtn').text.strip() if article.select_one('.lbtn') else "未知作者"time_text = article.select_one('.time').text.strip() if article.select_one('.time') else "未知时间"# 获取正文detail_res = requests.get(url, headers=headers, proxies=proxies, timeout=10)detail_soup = BeautifulSoup(detail_res.text, "html.parser")paragraphs = detail_soup.select("article p")content = "\n".join([p.text for p in paragraphs]) or "正文抓取失败"# AI摘要summary = generate_summary(content)results.append({"标题": title,"链接": url,"作者": author,"时间": time_text,"正文": content,"摘要": summary})except Exception as e:print(f"[跳过] 第{idx+1}条解析失败: {e}")time.sleep(0.5)return results# ========== 分类存储 ==========
def store_results(keyword, results):data_by_author = defaultdict(list)for item in results:data_by_author[item['作者']].append(item)os.makedirs("output", exist_ok=True)with open(f"output/{keyword}_results.json", "w", encoding="utf-8") as f:json.dump(data_by_author, f, ensure_ascii=False, indent=2)print(f"结果已保存至 output/{keyword}_results.json")# ========== 主程序 ==========
if __name__ == "__main__":kw = "人工智能"news_data = search_and_summarize(kw)store_results(kw, news_data)

原因解释:AI策略如何提升采集的鲁棒性?

技术策略效果
动态User-Agent模拟多终端访问,打散访问特征,规避静态规则封禁
Cookie注入模拟真实用户行为路径,提升数据展示完整度
代理IP池分布式访问策略,突破访问频率与地域限制
AI辅助解析结构自动适配DOM变动、标签缺失、广告干扰,提高数据提取准确率
自动摘要生成提高后续聚合、索引与推荐效率,为内容智能化打基础

陷阱提示

陷阱类型避坑建议
❌ IP直接访问使用优质代理(如亿牛云),支持动态住宅/独享节点切换
❌ Cookie失效使用AI自动获取或通过Selenium模拟登录获取真实cookie
❌ 数据解析错误结合AI工具如LangChain识别文章段落结构,提高内容抽取质量
❌ 接口被改版避免依赖API,直接从页面HTML结构中提取
❌ 摘要无效/空为异常情况准备默认摘要或启用重试机制,避免摘要流程中断

模板推荐:智能采集架构

┌────────────┐
│关键词输入   │
└────┬───────┘▼
┌────────────┐
│生成式AI辅助构造请求头│
└────┬───────┘▼
┌────────────┐
│代理IP调度    │
└────┬───────┘▼
┌────────────┐
│页面访问+防封策略 │
└────┬───────┘▼
┌────────────┐
│HTML解析器提取结构化内容│
└────┬───────┘▼
┌────────────┐
│摘要生成模块(AI) │
└────┬───────┘▼
┌────────────┐
│分类存储 + 聚合输出 │
└────────────────┘

总结提升

  • 本文以“今日头条关键词搜索”为例,展示了如何结合生成式AI与反爬技术(代理、cookie、User-Agent)构建一个具备稳定访问、结构化提取与AI摘要能力的“智能采集”;
  • 对比传统错误代码,完整示范了构建请求、规避封禁、提取正文、摘要生成并分类保存的全过程;
  • 推荐将该框架进一步融合LangChain、Milvus等组件,扩展为一个面向舆情/媒体聚合/文本挖掘的可复用平台。
http://www.xdnf.cn/news/12013.html

相关文章:

  • 6.4本日总结
  • MySQL权限详解
  • OD 算法题 B卷【查找舆情热词】
  • 直播美颜SDK深度解析:AI人脸美型与智能美白技术揭秘
  • c++ 命名规则
  • 浅析EXCEL自动连接PowerBI的模板
  • SCI论文核心框架与写作要素小结
  • Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)
  • Java面试高频核心内容
  • GRU 参数梯度推导与梯度消失分析
  • 技术文章大纲:SpringBoot自动化部署实战
  • 3. 表的操作
  • WARNING! The remote SSH server rejected x11 forwarding request.
  • webpack打包学习
  • JavaScript基础:运算符
  • Dataguard switchover遇到ORA-19809和ORA-19804报错的问题处理
  • Cross-Attention:注意力机制详解《一》
  • Java 反汇编
  • 【原理解析】为什么显示器Fliker dB值越大,闪烁程度越轻?
  • React---扩展补充
  • 祝贺XC3576H通过银河麒麟桌面操作系统的兼容性测试,取得麒麟软件互认证证书
  • 结节性甲状腺肿全流程大模型预测与决策系统总体架构设计方案大纲
  • Spring BeanPostProcessor
  • 【计算机组成原理】SPOOLing技术
  • PowerBI企业运营分析—全动态盈亏平衡分析
  • AI IDE 正式上线!通义灵码开箱即用
  • 驱动:字符设备驱动注册、读写实操
  • 用OpenNI2获取奥比中光Astra Pro输出的深度图(win,linux arm64平台)
  • React从基础入门到高级实战:React 高级主题 - 测试进阶:从单元测试到端到端测试的全面指南
  • PWM 相关知识整理