# 学习强国重要新闻爬虫使用说明 ## 功能概述 在 `XxqgCrawler` 类中新增了 `crawl_important` 方法,用于爬取学习强国"重要新闻"栏目的文章内容。 ## 实现原理 该方法结合了旧版 `myQiangguo` 爬虫和新版 Selenium 爬虫的优势: 1. **获取文章列表**:参考旧版爬虫方式,使用 `requests` 库直接请求 JSON 接口获取文章列表 - JSON接口地址: `https://www.xuexi.cn/lgdata/1jscb6pu1n2.json?_st=26095725` - 返回包含文章URL、标题、来源等基础信息的列表 2. **解析文章详情**:使用现有的 `parse_news_detail` 方法(基于 Selenium)解析每篇文章的详细内容 - 提取标题、发布时间、来源 - 提取正文内容(文字、图片、视频) - 保存完整的文章结构 ## 使用方法 ### 基本用法 ```python 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() ``` ### 自定义爬取数量 ```python # 只爬取前10篇文章 result = crawler.crawl_important(max_count=10) ``` ### 运行测试脚本 ```bash cd f:\Project\schoolNews\schoolNewsCrawler\crawler\xxqg python test_important_crawler.py ``` ## 输出结果 爬取完成后,结果会自动保存到 `Xxqg_important_news.json` 文件中,包含以下信息: ```json [ { "title": "文章标题", "url": "文章URL", "source": "来源", "publishTime": "发布时间", "contentRows": [ { "type": "text", "content": "段落文本" }, { "type": "img", "content": "" } ] } ] ``` ## 参数说明 ### `crawl_important(max_count=60)` - **max_count**: 最多爬取的文章数量,默认60篇 - **返回值**: `ResultDomain` 对象 - `success`: 是否成功 - `code`: 状态码(0表示成功,1表示失败) - `message`: 提示信息 - `dataList`: 新闻列表(`List[NewsItem]`) ## 注意事项 1. **浏览器初始化**:首次运行时会自动打开 Chrome 浏览器并访问学习强国主页获取 Cookie 2. **验证码处理**:如果遇到验证码,程序会暂停30秒让用户手动完成验证 3. **爬取速度**:每篇文章之间会有1-2秒的随机延迟,避免请求过快被封禁 4. **资源清理**:使用完毕后记得调用 `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文件 ```