Python爬取新型冠状病毒“谣言”新闻进行数据分析
一、爬取数据
话不多说了,直接上代码(copy即可用)
importrequests importpandasaspd classSpiderRumor(object): def__init__(self): self.url="https://vp.fact.qq.com/loadmore?artnum=0&page=%s" self.header={ "User-Agent":"Mozilla/5.0(iPhone;CPUiPhoneOS11_0likeMacOSX)AppleWebKit/604.1.38(KHTML,likeGecko)Version/11.0Mobile/15A372Safari/604.1", } defspider_run(self): df_all=list() forurlin[self.url%iforiinrange(30)]: data_list=requests.get(url,headers=self.header).json()["content"] temp_data=[[df["title"],df["date"],df["result"],df["explain"],df["tag"]]fordfindata_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日是谣言的高峰期,让我们来看看这两天的数据:
由上图得知一月二十四号和二十号传播的29条谣言中96.55%都是假的
谣言是否属实占比
从1月18日到今日截止2月14日共发现了300条谣言,右上图可得:76.33%都是假的,只要7.00%是属实的,其中14.33%的谣言属于伪科学而且还有8.00%属于尚无定论凭空捏造出的,需要多注意⚠️
谣言的关键字展示
下面介绍matplotlib绘制饼图的代码
importnumpyasnp importpandasaspd importmatplotlib.pyplotasplt #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]]我们要使用一行列表生成式快速的将所以的关键字取出来[jforiinaforjini]
importnumpyasnp importpandasaspd importmatplotlib.pyplotasplt #Windows系统设置中文字体 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False data=pd.read_csv("/冠状病毒谣言数据.csv"") df=pd.Series([jforiin[eval(i)foriindata["tag"].tolist()]forjini]).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爬取新型冠状病毒“谣言”新闻进行数据分析,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。