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获取当前时间的方法
Jan 14 Python
python使用urllib模块开发的多线程豆瓣小站mp3下载器
Jan 16 Python
用Python编写一个简单的FUSE文件系统的教程
Apr 02 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
Django 前后台的数据传递的方法
Aug 08 Python
Python简单实现控制电脑的方法
Jan 22 Python
python提取包含关键字的整行数据方法
Dec 11 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
python 直接赋值和copy的区别详解
Aug 07 Python
判断Threading.start新线程是否执行完毕的实例
May 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
php创建多级目录的方法
2015/03/24 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
python读取Android permission文件
2013/11/01 Python
Python struct模块解析
2014/06/12 Python
跟老齐学Python之用while来循环
2014/10/02 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
python实现图片中文字分割效果
2019/07/22 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
Ado与Ado.net的相同与不同
2014/12/08 面试题
房屋转让协议书范本
2014/04/11 职场文书
2014年党总支工作总结
2014/12/18 职场文书
民事调解书范文
2015/05/20 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Python函数式编程中itertools模块详解
2021/09/15 Python
Python OpenCV之常用滤波器使用详解
2022/04/07 Python