实战|用可视化方式看新闻,迅速了解最新时事热点
今天教大家如何爬取新浪网新闻数据,通过词云可视化展示新闻关键词,快速了解最新的新闻热点。这里爬取了**2500**条新闻数据进行演示。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5803edbb27bc43ea9b42cd770a876520~tplv-k3u1fbpfcp-zoom-1.image)
PS:这里采集的主要是国内最新新闻数据。先来看一下数据:
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8f1f9ec2c5de43848b8820742aac441c~tplv-k3u1fbpfcp-zoom-1.image)
# 1、网页分析
在开始采集之前先说一下新闻数据来源(新浪网)
```
https://news.sina.com.cn/china/
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a1fb1fb56c6d4637b2fc9973e4dd6d77~tplv-k3u1fbpfcp-zoom-1.image)
### 下一页分析
我们想要采集多条数据,因此需要找到下一页的规律
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/59f6cf19a1f74aee9f4cc5e810c449c9~tplv-k3u1fbpfcp-zoom-1.image)
点击第二页的时候,发现网页链接没有变化,这里数据是通过异步加载过来,因此查看network,找到了目标异步链接:
```
https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8&callback=feedCardJsonpCallback&_=1619440444354
```
但发现callback=feedCardJsonpCallback&_=1619440444354,可以去掉,因此最终链接如下:
```
https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8
```
参数page是页数,经过测试page范围在1~125,到126的时候就请求到的是空数据。每一页一共有20条,因此一共是**2500**条新闻数据。
### json数据结构
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fb86edaac3ba4f8ba3f8cfb5c2673c14~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/32e4f09f3b654ae8bf169122b4c1a465~tplv-k3u1fbpfcp-zoom-1.image)
这里咱们学院获取三个字段(标题title、原标题intro、关键词keywords)
# 2、采集数据
今天教大家如何爬取新浪网新闻数据,通过词云可视化展示新闻关键词,快速了解最新的新闻热点。这里爬取了**2500**条新闻数据进行演示。
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5803edbb27bc43ea9b42cd770a876520~tplv-k3u1fbpfcp-zoom-1.image)
PS:这里采集的主要是国内最新新闻数据。先来看一下数据:
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8f1f9ec2c5de43848b8820742aac441c~tplv-k3u1fbpfcp-zoom-1.image)
# 1、网页分析
在开始采集之前先说一下新闻数据来源(新浪网)
```
https://news.sina.com.cn/china/
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a1fb1fb56c6d4637b2fc9973e4dd6d77~tplv-k3u1fbpfcp-zoom-1.image)
### 下一页分析
我们想要采集多条数据,因此需要找到下一页的规律
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/59f6cf19a1f74aee9f4cc5e810c449c9~tplv-k3u1fbpfcp-zoom-1.image)
点击第二页的时候,发现网页链接没有变化,这里数据是通过异步加载过来,因此查看network,找到了目标异步链接:
```
https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8&callback=feedCardJsonpCallback&_=1619440444354
```
但发现callback=feedCardJsonpCallback&_=1619440444354,可以去掉,因此最终链接如下:
```
https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8
```
参数page是页数,经过测试page范围在1~125,到126的时候就请求到的是空数据。每一页一共有20条,因此一共是**2500**条新闻数据。
### json数据结构
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fb86edaac3ba4f8ba3f8cfb5c2673c14~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/32e4f09f3b654ae8bf169122b4c1a465~tplv-k3u1fbpfcp-zoom-1.image)
这里咱们学院获取三个字段(标题title、原标题intro、关键词keywords)
# 2、采集数据
### 采集第一页
分析好之后,下面开始使用python编程采集数据。
```
url="https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=1&encode=utf-8"
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1bbb68c97d0d4d5c8a3a7bb4ee63bf7c~tplv-k3u1fbpfcp-zoom-1.image)
这是第一页的数据,已经可以成功采集,只需要改变page值就可以采集下一页数据。接着开始把采集的数据存入到excel中。
### 保存数据
这里使用openxl库去将数据保存到excel中,先定义表头
```
outwb = openpyxl.Workbook()
```
接着写入到excel中
```
count = 2
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70f17c000b2a43779ecac6c54d60ce8e~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/591e017c52c5477fa272ec4f04a11023~tplv-k3u1fbpfcp-zoom-1.image)
# 3、词云可视化
这里主要绘制三个词云可视化(用标题、原标题、关键词分布作为数据去画图)。
标题是原标题的精简版,关键词是这篇文章的核心关键词,通过绘制这个三个词云图,然后进行对比分析。
读取数据
```
datafile = u'新闻数据-李运辰.xls'
```
### 标题词云可视化
```
###标题词云图
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/350c2af89d2e4ce19c3ed218aea9021d~tplv-k3u1fbpfcp-zoom-1.image)
### 原标题词云可视化
在画词云图之前,先对数据进行处理一下(比如“原标题:”去掉)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4e3b19d4a26f4378b989a9e6202ff8b1~tplv-k3u1fbpfcp-zoom-1.image)
```
###原标题词云图
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ea6c72065ad941919d3c28ca177e331d~tplv-k3u1fbpfcp-zoom-1.image)
### 关键词词云可视化
```
###关键词词云图
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6e8db5dbcce84555b645652527cfbc23~tplv-k3u1fbpfcp-zoom-1.image)
**分析:**
三个词云图的时事热点都差不多,核心点在于“新冠肺炎”、“病例”、“北京”,“与外交国家等情况”。具体就不过多的说,通过词云图可以一目了然的了解到当前国内的核心热点关键词。
# 4、小结
为了大家方便学习,辰哥把本文的**完整源码**上传,需要的通过同名公众回复:**新闻**
本文讲解了如何去采集新浪网新闻数据并绘制词云图展示分析。
### 采集第一页
分析好之后,下面开始使用python编程采集数据。
```
url="https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=1&encode=utf-8"
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1bbb68c97d0d4d5c8a3a7bb4ee63bf7c~tplv-k3u1fbpfcp-zoom-1.image)
这是第一页的数据,已经可以成功采集,只需要改变page值就可以采集下一页数据。接着开始把采集的数据存入到excel中。
### 保存数据
这里使用openxl库去将数据保存到excel中,先定义表头
```
outwb = openpyxl.Workbook()
```
接着写入到excel中
```
count = 2
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70f17c000b2a43779ecac6c54d60ce8e~tplv-k3u1fbpfcp-zoom-1.image)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/591e017c52c5477fa272ec4f04a11023~tplv-k3u1fbpfcp-zoom-1.image)
# 3、词云可视化
这里主要绘制三个词云可视化(用标题、原标题、关键词分布作为数据去画图)。
标题是原标题的精简版,关键词是这篇文章的核心关键词,通过绘制这个三个词云图,然后进行对比分析。
读取数据
```
datafile = u'新闻数据-李运辰.xls'
```
### 标题词云可视化
```
###标题词云图
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/350c2af89d2e4ce19c3ed218aea9021d~tplv-k3u1fbpfcp-zoom-1.image)
### 原标题词云可视化
在画词云图之前,先对数据进行处理一下(比如“原标题:”去掉)
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4e3b19d4a26f4378b989a9e6202ff8b1~tplv-k3u1fbpfcp-zoom-1.image)
```
###原标题词云图
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ea6c72065ad941919d3c28ca177e331d~tplv-k3u1fbpfcp-zoom-1.image)
### 关键词词云可视化
```
###关键词词云图
```
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6e8db5dbcce84555b645652527cfbc23~tplv-k3u1fbpfcp-zoom-1.image)
**分析:**
三个词云图的时事热点都差不多,核心点在于“新冠肺炎”、“病例”、“北京”,“与外交国家等情况”。具体就不过多的说,通过词云图可以一目了然的了解到当前国内的核心热点关键词。
# 4、小结
为了大家方便学习,辰哥把本文的**完整源码**上传,需要的通过同名公众回复:**新闻**
本文讲解了如何去采集新浪网新闻数据并绘制词云图展示分析。