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 相关文章推荐
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
详解Python命令行解析工具Argparse
Apr 20 Python
Python中super()函数简介及用法分享
Jul 11 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
python画环形图的方法
Mar 25 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
用python实现名片管理系统
Jun 18 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
用Python实现职工信息管理系统
Dec 30 Python
用Python提取PDF表格的方法
Apr 11 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作的文本留言本的例子(四)
2006/10/09 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
详谈PHP编码转换问题
2015/07/28 PHP
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
bootstrap模态框示例代码分享
2017/05/17 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
element-ui表格数据转换的示例代码
2018/08/24 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
django做form表单的数据验证过程详解
2019/07/26 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
工程造价自荐信
2013/10/09 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
求职自我推荐信
2014/06/25 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
教师教育教学随笔
2015/08/15 职场文书
部门主管竞聘书
2015/09/15 职场文书
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang