Python爬取新型冠状病毒“谣言”新闻进行数据分析


Posted in Python onFebruary 16, 2020

一、爬取数据

话不多说了,直接上代码( copy即可用 )

import requests
import pandas as pd
class SpiderRumor(object):
 def __init__(self):
 self.url = "https://vp.fact.qq.com/loadmore?artnum=0&page=%s"
 self.header = {
  "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
 }
 def spider_run(self):
 df_all = list()
 for url in [self.url % i for i in range(30)]:
  data_list = requests.get(url, headers=self.header).json()["content"]
  temp_data = [[df["title"], df["date"], df["result"], df["explain"], df["tag"]] for df in data_list]
  df_all.extend(temp_data)
  print(temp_data[0])
 pd.DataFrame(df_all, columns=["title", "date", "result", "explain", "tag"]).to_csv("冠状病毒谣言数据.csv", encoding="utf_8_sig")
if __name__ == '__main__':
 spider = SpiderRumor()
 spider.spider_run()

爬虫过程

Python爬取新型冠状病毒“谣言”新闻进行数据分析

二、数据分析

数据展示

Python爬取新型冠状病毒“谣言”新闻进行数据分析

每日谣言数量

Python爬取新型冠状病毒“谣言”新闻进行数据分析

由图可得:1月24日和1月25日是谣言的高峰期,让我们来看看这两天的数据:

Python爬取新型冠状病毒“谣言”新闻进行数据分析
Python爬取新型冠状病毒“谣言”新闻进行数据分析

由上图得知 一月二十四号和二十号传播的 29 条谣言中 96.55% 都是假的

谣言是否属实占比

Python爬取新型冠状病毒“谣言”新闻进行数据分析

从1月18日到今日截止2月14日共发现了300条谣言,右上图可得:76.33% 都是假的,只要 7.00% 是属实的,其中 14.33% 的谣言属于 伪科学 而且 还有 8.00% 属于尚无定论凭空捏造出的,需要多注意⚠️

谣言的关键字展示

Python爬取新型冠状病毒“谣言”新闻进行数据分析

下面介绍 matplotlib 绘制饼图的代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Windows系统设置中文字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = pd.read_csv("/冠状病毒谣言数据.csv"")
labels = data["explain"].value_counts().index.tolist()
sizes = data["explain"].value_counts().values.tolist()
colors = ['lightgreen', 'gold', 'lightskyblue', 'lightcoral']
plt.figure(figsize=(15,8))
plt.pie(sizes, labels=labels,
 colors=colors, autopct='%1.1f%%', shadow=True, startangle=50) # shadow=True 表示阴影
plt.axis('equal') # 使图居中
plt.show()

绘制谣言关键字分布图(观察 tag 这个字段)

Python爬取新型冠状病毒“谣言”新闻进行数据分析

由于 tag 这个字段内容是列表,我们取出来后是列表嵌套列表:[[a, b], [b, c], [c, d]] 我们要使用一行列表生成式快速的将所以的关键字取出来 [j for i in a for j in i]

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Windows系统设置中文字体
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

data = pd.read_csv("/冠状病毒谣言数据.csv"")
df = pd.Series([j for i in [eval(i) for i in data["tag"].tolist()] for j in i]).value_counts()[:20]
X = df.index.tolist()
y = df.values.tolist()
plt.figure(figsize=(15, 8)) # 设置画布
plt.bar(X, y, color="orange")
plt.tight_layout()
# plt.grid(axis="y")
plt.grid(ls='-.')
plt.show()

总结

以上所述是小编给大家介绍的Python爬取新型冠状病毒“谣言”新闻进行数据分析,希望对大家有所帮助!

Python 相关文章推荐
使用IPython来操作Docker容器的入门指引
Apr 08 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
《Python学习手册》学习总结
Jan 17 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
Pycharm github配置实现过程图解
Oct 13 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
PyQt QMainWindow的使用示例
Mar 24 Python
基于python实现微信好友数据分析(简单)
Feb 16 #Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 #Python
python中的 zip函数详解及用法举例
Feb 16 #Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 #Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 #Python
使用Tensorboard工具查看Loss损失率
Feb 15 #Python
Keras使用tensorboard显示训练过程的实例
Feb 15 #Python
You might like
php学习之 数组声明
2011/06/09 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
php四种基础算法代码实例
2013/10/29 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
Python中类的初始化特殊方法
2017/12/01 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
windows支持哪个版本的python
2020/07/03 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
体育比赛口号
2014/06/09 职场文书
个人总结格式范文
2015/03/09 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
win10下go mod配置方式
2021/04/25 Golang