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编写一个国际象棋AI程序
Nov 28 Python
Python类的用法实例浅析
May 27 Python
python3 shelve模块的详解
Jul 08 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
Python中的is和==比较两个对象的两种方法
Sep 06 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
如何通过Django使用本地css/js文件
Jan 20 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
pycharm永久激活超详细教程
Oct 29 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 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/08/13 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
javascript函数中的arguments参数
2010/08/01 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
python的range和linspace使用详解
2019/11/27 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
教师节活动主持词
2014/04/02 职场文书
优秀党员推荐材料
2014/12/18 职场文书
2015年保送生自荐信
2015/03/24 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
Vue如何清空对象
2022/03/03 Vue.js