爱奇艺热搜榜的热搜词词云模型

之前完成了对于各大视频网站的热搜、热播的数据爬取布置,现在系统每4小时自动爬取数据,并且判断是否重复,若为新的数据则存到设置好的Mongodb中。

这次主要对于三个月爬取的爱奇艺热搜榜的热搜词做一个词云模型,以获取三个月以来热搜的热点词。

爱奇艺热搜榜(http://v.iqiyi.com/index/)如下图所示:


爱奇艺热搜榜图

爬取的数据存到数据库中如下图所示:


爬取数据数据库图

首先,我们要从Mongodb中导出我们需要的数据。使用python的pymongo库实现与mongo数据库连接,具体代码如下:

mongo_server="ip:port"                           #这里是你的mongo服务器的ip地址和端口号

uri ='mongodb://' + mongo_server

mongo_client = MongoClient(uri)

db = mongo_client['video_spider']           #数据存储的数据库名称

collection = db['iqiyi_hotsearch']              #数据具体存在的数据表

完成上述配置后,我们就可以根据数据库中存储的数据格式获取我们需要的数据。我们只需要取出爬虫时间以及关键词,具体代码如下:

for i in collection.find({"type":"热搜"}):              #我们将热搜榜的类型设置为“热搜”

    data_dict[str(i["time_crawled"])] = []             #为数据存储字典设置key值,key为对应的爬取时间

    for j in range(len(i["word"])):                        

        data_dict[i["time_crawled"]].append(i["word"][j]["title"].encode('utf-8'))                #在“word”的数据中,仅取出title字段的数据

这里需要注意的是,数据的编码问题,因为存储在数据库中是unicode,我们需要编译为utf-8格式,才能正确显示中文,同时代码开头也不要忘记申明。

将数据存成txt格式预览(因为字典是无序的,所以排列不按时间顺序):


数据预览图

至此,我们得到了处理的语料。

将语料存入列表中:

keywords_list = []

for index, item in enumerate(data_dict):

    for i in data_dict:

        keywords_list.append(i)

得到的关键词列表存储为txt格式:

with open("keywords_list.txt",'w')as f:

    for i in keywords_list:

        f.write(i)

        f.write(",")

    f.close()

在word art网站(https://wordart.com/create)上生成词云,如图:


词云图

这里尝试了使用wordle,图悦等在线生成器,其中支持中文的较少,图悦的关键词分割不是很满意。又尝试了利用wordcloud库生成词云,但是在linux服务器上,中文字体问题没有得到解决。

之后又使用了nltk做了一个词频统计,存成csv格式如下图:


词频统计csv图

同样因为linux字体问题,词频图的中文无法显示,故没有贴图。

接下来想对热搜榜的视频通过豆瓣接口,进行类别,评分等数据爬取,分析热搜与类别,评分等背后关系。

你可能感兴趣的:(爱奇艺热搜榜的热搜词词云模型)