一起用Python来看看川普今年在推特上都发了些什么

2020-08-19 10:31:00 浏览数 (1)

引言

川普作为一个推特狂人,上台以来一共发了一万多条推特,本文爬取了川普在2020年的全部推特内容并将其绘制成了词云图。

相关模块

代码语言:javascript复制
selenium:抓取动态网页
bs4:解析网页
nltk:分词和统计词频
wordcloud:绘制词云
imageio:读取图片

相关文件

程序文件:后台回复 川普 获取。

实现效果

功能实现

整个流程很简单,首先使用selenium bs4获取网页信息,然后使用nltk对文本分词并去除标点符号和停用词,最后可视化得到的数据,这里我使用wordcloud绘制了一个词云。

获取网页信息这部分就不赘述了,在之前的文章里介绍过很多次了,之所以选择selenium这个速度不是很快的工具是因为我不太懂js方面的知识,为了尽可能降低学习成本,所以我选择了selenium。

可以参考之前的这篇文章 到底应该怎么给女朋友选口红色号?

唯一需要注意的是推特的网页是一个下拉加载的动态网页,爬取这个网页需要每隔几秒将网页下拉加载更多。实现方法也很简单。

然后使用nltk库去除文本中的停用词和标点符号。nltk库提供了英语的停用词,可以通过stop = stopwords.words('english')加载停用词。

得到停用词列表后,通过循环去除文本中的停用词。

此时文本中还有大量的标点符号,所以还需要去掉文本中的标点符号。

代码语言:javascript复制
words=[word.lower() for word in words if word.isalpha()]

去除掉无用信息后就可以统计一下文本中的词频了,nltk库已经帮你实现了这一功能。

代码语言:javascript复制
freq_word = nltk.FreqDist(words)

最后,因为wordcloud绘制词云时传入的是一个字典,所以需要将获得的词频数据写入一个字典。

得到了文本中的词频数据后,就可以开始进行可视化了,因为我想做成一个有形状的词云,所以我选择了wordcloud库而没有选择pyecharts库。

使用wordcloud库生成一个词云只需要两行代码,第一行导入轮廓图片,第二行使用WordCloud()生成即可。

最后保存生成的词云图

代码语言:javascript复制
wc.to_file('Trump.png')

最后

如果觉得本文还可以,还请各位点个在看。

0 人点赞