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 相关文章推荐
python3中dict(字典)的使用方法示例
Mar 22 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
用Python实现校园通知更新提醒功能
Nov 23 Python
Django创建一个后台的基本步骤记录
Oct 02 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编程风格规范分享
2014/01/15 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
javascript 函数速查表
2010/02/07 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
Vue异步加载about组件
2017/10/31 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
js绘制一条直线并旋转45度
2020/08/21 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
简单介绍Python中的floor()方法
2015/05/15 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
对Python信号处理模块signal详解
2019/01/09 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
Python3远程监控程序的实现方法
2019/07/15 Python
如何基于python实现不邻接植花
2020/05/01 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
如何进行有效的自我评价
2013/09/27 职场文书
写给保洁员表扬信
2014/01/08 职场文书
中学生差生评语
2014/01/30 职场文书
医德考评自我评价
2014/09/14 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
小班教师个人总结
2015/02/05 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python