Files
green_classroom/CRAWLER_README.md

179 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 中央主流媒体爬虫系统
本项目是一个专门用于爬取中央主流媒体的Django爬虫系统支持爬取18家中央主流媒体及其子网站、客户端和新媒体平台。
## 支持的媒体列表
### 18家中央主流媒体
1. **人民日报** - 人民网、人民日报客户端、人民日报报纸
2. **新华社** - 新华网、新华网主站、新华社移动端
3. **中央广播电视总台** - 央视网、央视新闻、央视移动端
4. **求是** - 求是网、求是移动端
5. **解放军报** - 解放军报、解放军报移动端
6. **光明日报** - 光明日报、光明日报移动端
7. **经济日报** - 经济日报、经济日报移动端
8. **中国日报** - 中国日报、中国日报移动端
9. **工人日报** - 工人日报、工人日报移动端
10. **科技日报** - 科技日报、科技日报移动端
11. **人民政协报** - 人民政协报、人民政协报移动端
12. **中国纪检监察报** - 中国纪检监察报、中国纪检监察报移动端
13. **中国新闻社** - 中国新闻社、中国新闻社移动端
14. **学习时报** - 学习时报、学习时报移动端
15. **中国青年报** - 中国青年报、中国青年报移动端
16. **中国妇女报** - 中国妇女报、中国妇女报移动端
17. **法治日报** - 法治日报、法治日报移动端
18. **农民日报** - 农民日报、农民日报移动端
### 特殊平台
19. **学习强国** - 中央媒体学习号及省级以上学习平台
20. **旗帜网** - 旗帜网及其移动端
21. **中国网** - 主网及中国网一省份(不转发二级子网站)
## 使用方法
### 1. 单个媒体爬取
```bash
# 爬取人民日报所有平台
python manage.py crawl_rmrb
# 爬取人民日报特定平台
python manage.py crawl_rmrb --platform peopleapp # 只爬取客户端
python manage.py crawl_rmrb --platform people # 只爬取人民网
python manage.py crawl_rmrb --platform paper # 只爬取报纸
# 爬取新华社所有平台
python manage.py crawl_xinhua
# 爬取央视所有平台
python manage.py crawl_cctv
```
### 2. 批量爬取所有媒体
```bash
# 爬取所有中央主流媒体
python manage.py crawl_all_media
# 爬取指定媒体
python manage.py crawl_all_media --media rmrb,xinhua,cctv
# 爬取指定平台类型
python manage.py crawl_all_media --platform web # 只爬取网站
python manage.py crawl_all_media --platform mobile # 只爬取移动端
```
### 3. 导出文章数据
```bash
# 导出所有文章为JSON格式
python manage.py export_articles --format json
# 导出指定网站的文章为CSV格式
python manage.py export_articles --format csv --website "人民日报客户端"
# 导出为Word文档包含媒体文件
python manage.py export_articles --format docx --include-media
# 导出为ZIP包包含文章数据和媒体文件
python manage.py export_articles --format json --include-media
```
## 可用的爬虫命令
| 命令 | 媒体名称 | 说明 |
|------|----------|------|
| `crawl_rmrb` | 人民日报 | 爬取人民网、客户端、报纸 |
| `crawl_xinhua` | 新华社 | 爬取新华网、主站、移动端 |
| `crawl_cctv` | 中央广播电视总台 | 爬取央视网、央视新闻、移动端 |
| `crawl_qiushi` | 求是 | 爬取求是网、移动端 |
| `crawl_pla` | 解放军报 | 爬取解放军报、移动端 |
| `crawl_gmrb` | 光明日报 | 爬取光明日报、移动端 |
| `crawl_jjrb` | 经济日报 | 爬取经济日报、移动端 |
| `crawl_chinadaily` | 中国日报 | 爬取中国日报、移动端 |
| `crawl_grrb` | 工人日报 | 爬取工人日报、移动端 |
| `crawl_kjrb` | 科技日报 | 爬取科技日报、移动端 |
| `crawl_rmzxb` | 人民政协报 | 爬取人民政协报、移动端 |
| `crawl_zgjwjc` | 中国纪检监察报 | 爬取中国纪检监察报、移动端 |
| `crawl_chinanews` | 中国新闻社 | 爬取中国新闻社、移动端 |
| `crawl_xxsb` | 学习时报 | 爬取学习时报、移动端 |
| `crawl_zgqnb` | 中国青年报 | 爬取中国青年报、移动端 |
| `crawl_zgfnb` | 中国妇女报 | 爬取中国妇女报、移动端 |
| `crawl_fzrb` | 法治日报 | 爬取法治日报、移动端 |
| `crawl_nmrb` | 农民日报 | 爬取农民日报、移动端 |
| `crawl_xuexi` | 学习强国 | 爬取中央媒体学习号及省级平台 |
| `crawl_qizhi` | 旗帜网 | 爬取旗帜网、移动端 |
| `crawl_china` | 中国网 | 爬取主网及一省份 |
| `crawl_all_media` | 所有媒体 | 批量爬取所有中央主流媒体 |
## 平台选项
每个爬虫命令都支持以下平台选项:
- `all` (默认): 爬取所有平台
- `web`: 只爬取网站版本
- `mobile`: 只爬取移动端版本
- 特定平台: 每个媒体可能有特定的平台选项
## 数据导出格式
支持以下导出格式:
- `json`: JSON格式便于程序处理
- `csv`: CSV格式便于Excel打开
- `docx`: Word文档格式包含格式化的文章内容
## 媒体文件处理
系统会自动下载文章中的图片和视频文件,并保存到本地媒体目录。导出时可以选择是否包含媒体文件。
## 注意事项
1. **爬取频率**: 建议控制爬取频率,避免对目标网站造成过大压力
2. **数据存储**: 爬取的数据会存储在Django数据库中确保有足够的存储空间
3. **网络环境**: 某些网站可能需要特定的网络环境才能访问
4. **反爬虫**: 部分网站可能有反爬虫机制,需要适当调整爬取策略
## 技术特性
- **智能识别**: 自动识别文章页面和内容区域
- **媒体下载**: 自动下载文章中的图片和视频
- **去重处理**: 自动避免重复爬取相同文章
- **错误处理**: 完善的错误处理和日志记录
- **可扩展**: 易于添加新的媒体网站
## 依赖要求
- Django 3.0+
- requests
- beautifulsoup4
- python-docx (用于Word导出)
- Pillow (用于图片处理)
## 安装依赖
```bash
pip install -r requirements.txt
```
## 数据库迁移
```bash
python manage.py makemigrations
python manage.py migrate
```
## 运行爬虫
```bash
# 启动Django服务器
python manage.py runserver
# 运行爬虫
python manage.py crawl_all_media
```
## 查看结果
爬取完成后可以通过Django管理界面或导出命令查看爬取的文章数据。