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中的各种函数的使用
May 24 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
xml转json的js代码
2012/08/28 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
python编程嵌套函数实例代码
2018/02/11 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
django和flask哪个值得研究学习
2020/07/31 Python
django教程如何自学
2020/07/31 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
数据库连接池的工作原理
2012/09/26 面试题
债务授权委托书范本
2014/10/17 职场文书
5.12护士节活动总结
2015/02/10 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
2015年环保局工作总结
2015/05/22 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python