4.1 KiB
4.1 KiB
学习强国重要新闻爬虫使用说明
功能概述
在 XxqgCrawler 类中新增了 crawl_important 方法,用于爬取学习强国"重要新闻"栏目的文章内容。
实现原理
该方法结合了旧版 myQiangguo 爬虫和新版 Selenium 爬虫的优势:
-
获取文章列表:参考旧版爬虫方式,使用
requests库直接请求 JSON 接口获取文章列表- JSON接口地址:
https://www.xuexi.cn/lgdata/1jscb6pu1n2.json?_st=26095725 - 返回包含文章URL、标题、来源等基础信息的列表
- JSON接口地址:
-
解析文章详情:使用现有的
parse_news_detail方法(基于 Selenium)解析每篇文章的详细内容- 提取标题、发布时间、来源
- 提取正文内容(文字、图片、视频)
- 保存完整的文章结构
使用方法
基本用法
from crawler.xxqg.XxqgCrawler import XxqgCrawler
# 初始化爬虫
crawler = XxqgCrawler()
# 爬取重要新闻(默认最多60篇)
result = crawler.crawl_important()
# 检查结果
if result.success:
print(f"成功爬取 {len(result.dataList)} 篇新闻")
for news in result.dataList:
print(f"标题: {news.title}")
print(f"来源: {news.source}")
print(f"发布时间: {news.publishTime}")
else:
print(f"爬取失败: {result.message}")
# 关闭浏览器
crawler.driver.quit()
自定义爬取数量
# 只爬取前10篇文章
result = crawler.crawl_important(max_count=10)
运行测试脚本
cd f:\Project\schoolNews\schoolNewsCrawler\crawler\xxqg
python test_important_crawler.py
输出结果
爬取完成后,结果会自动保存到 Xxqg_important_news.json 文件中,包含以下信息:
[
{
"title": "文章标题",
"url": "文章URL",
"source": "来源",
"publishTime": "发布时间",
"contentRows": [
{
"type": "text",
"content": "段落文本"
},
{
"type": "img",
"content": "<img src='图片URL' />"
}
]
}
]
参数说明
crawl_important(max_count=60)
- max_count: 最多爬取的文章数量,默认60篇
- 返回值:
ResultDomain对象success: 是否成功code: 状态码(0表示成功,1表示失败)message: 提示信息dataList: 新闻列表(List[NewsItem])
注意事项
- 浏览器初始化:首次运行时会自动打开 Chrome 浏览器并访问学习强国主页获取 Cookie
- 验证码处理:如果遇到验证码,程序会暂停30秒让用户手动完成验证
- 爬取速度:每篇文章之间会有1-2秒的随机延迟,避免请求过快被封禁
- 资源清理:使用完毕后记得调用
crawler.driver.quit()关闭浏览器
与旧版爬虫的对比
旧版爬虫 (myQiangguo)
- 使用
requests+BeautifulSoup解析静态HTML - 依赖于特定的
data+MD5.js接口格式 - 需要处理不同格式的URL(.html和.json)
新版爬虫 (XxqgCrawler)
- 结合
requests获取列表 +Selenium解析详情 - 能够处理动态加载的内容
- 统一的接口和返回格式
- 更好的错误处理和日志记录
扩展功能
如果需要爬取其他栏目,可以参考 crawl_important 方法的实现,修改对应的 JSON 接口URL即可。
常见栏目的JSON接口:
- 重要新闻:
https://www.xuexi.cn/lgdata/1jscb6pu1n2.json?_st=26095725 - 重要活动:
https://www.xuexi.cn/lgdata/1jpuhp6fn73.json?_st=26095746 - 重要会议:
https://www.xuexi.cn/lgdata/19vhj0omh73.json?_st=26095747 - 重要讲话:
https://www.xuexi.cn/lgdata/132gdqo7l73.json?_st=26095749
技术架构
crawl_important()
├── requests 获取JSON列表
│ └── 解析文章URL和基础信息
├── 遍历URL列表
│ ├── parse_news_detail() (Selenium)
│ │ ├── 访问文章页面
│ │ ├── 提取标题、时间、来源
│ │ └── 解析内容(文字、图片、视频)
│ └── 补充缺失的字段
└── 保存结果到JSON文件