Python实战:爬取并分析疫情期间的网络谣言数据

温以宁
温以宁
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍如何使用Python爬取权威辟谣平台数据,并通过Pandas和Matplotlib进行可视化分析。文章涵盖从数据抓取、清洗嵌套列表关键字,到绘制谣言真假占比饼图及高频关键字柱状图的全过程,帮助读者掌握利用编程手段进行舆情数据分析的完整技能。

数据抓取与爬虫实现

一、数据抓取

为了节省篇幅,这里直接提供可运行的完整代码。


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()

爬虫实现逻辑

疫情谣言数据分析与可视化

二、数据分析

数据可视化展示

每日谣言数量统计

从图表中可以观察到,1月24日和1月25日出现了谣言发布的高峰期。接下来我们将重点分析这两天的具体数据情况。


根据上图数据显示,在1月24日传播的29条谣言中,有96.55%被证实为虚假信息。

谣言真实性分布比例

统计周期从1月18日至2月14日,共计发现300条相关谣言。右上图显示,其中76.33%为假谣言,仅有7.00%为真实信息。此外,14.33%的谣言属于伪科学范畴,另有8.00%属于尚无定论或凭空捏造的内容,这部分需要引起高度关注⚠️。

谣言高频关键字展示

下面将介绍使用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字段分析)

由于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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。