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实现拼接多张图片的方法
Dec 01 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
python交互式图形编程实例(二)
Nov 17 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
Python csv文件的读写操作实例详解
Nov 19 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 Python
python函数超时自动退出的实操方法
Dec 28 Python
利用python实现后端写网页(flask框架)
Feb 28 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 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 curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
PHP常用的小程序代码段
2015/11/14 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
图解javascript作用域链
2019/05/27 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
大学生求职推荐信
2013/11/27 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
企业环保标语
2014/06/10 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
资产运营委托书范本
2014/10/16 职场文书
党员活动总结
2015/02/04 职场文书
如何撰写创业策划书
2019/06/27 职场文书
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL