项目说明文档201805091
需积分: 0 164 浏览量
更新于2022-08-08
收藏 266KB DOCX 举报
该项目是一个集成Python、MySQL、Elasticsearch的新闻分析系统,具备数据抓取、存储、检索和分析功能。以下是关于这个项目的关键知识点:
1. **Python环境**:项目基于Python 2.7版本,依赖于一系列Python库,如:
- Tornado:用于构建异步网络应用,提供Web服务器和客户端I/O。
- Requests:HTTP客户端库,用于发送HTTP请求。
- PyMySQL:Python接口,用于连接MySQL数据库。
- Urllib2:Python标准库的一部分,用于处理URL相关的任务,如打开网页。
- Cookielib:处理HTTP Cookie的库。
- zlib:提供了压缩和解压缩功能。
- Queue:线程安全的队列,用于多线程间的通信。
- BeautifulSoup:HTML和XML文档的解析库,用于提取数据。
- demjson:JSON编码和解码库。
- TextRank4ZH:中文文本的TextRank算法实现,用于摘要生成。
- Jieba:中文分词库,支持词性标注和关键词抽取。
- Elasticsearch:分布式全文搜索引擎,用于高效存储和检索新闻数据。
2. **数据库**:
- MySQL:作为关系型数据库管理系统,存储新闻数据和元信息。
- 部署时需修改`mysql_conf.py`配置文件,设置数据库连接参数。
- 使用`mysql_prepare.py`脚本创建数据库和表结构。
- `history_prepare.py`用于抓取历史新闻数据并存储到MySQL。
3. **Elasticsearch**:
- 需要版本6.x或更高,确保至少4GB内存。
- 启动Elasticsearch服务,用于全文搜索和分析。
- 使用`mysql2elastic.py`将MySQL中的新闻数据导入到Elasticsearch索引。
- `mysql2elastic_yesterday.py`用于每天更新新闻索引。
4. **爬虫程序**:
- `daily_crawler.py`启动日常爬虫程序,可以前台或后台运行,持续抓取新闻数据。
5. **Web服务接口**:
- 使用Tornado框架搭建Web服务,监听8888端口。
- 主要接口包括:
- `news_search`:POST请求,返回新闻列表和结果数量。支持按极性、来源、话题和日期范围筛选。
- `news_analyze`:POST请求,返回新闻摘要和关键词列表。需要新闻URL、标题和来源。
- `topic_trend`:POST请求,返回特定话题在不同时间周期内的文章数量,用于分析话题热度趋势。
这些接口设计允许用户通过API进行新闻的搜索、分析和趋势观察,适用于新闻监控、情感分析等应用场景。整个项目从数据获取、存储到检索和分析,充分展示了Python在大数据处理和Web服务构建上的能力。