python bs4怎么抓豆瓣评论做词频表

Python027

python bs4怎么抓豆瓣评论做词频表,第1张

根据词频生成词云。

该程序进行爬取豆瓣热评,将爬取的评论(json文件)保存到与该python文件同一级目录下注意需要下载这几个库:requests、lxml、json、time,该程序将json中的数据进行处理,提取重要信息,并用wordcloud库制作词云图片,同样保存到与该python文件同一级目录下注意需要下载这几个库:jieba、wordcloud、json。

Python是一种跨平台的计算机程序设计语言是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。

豆瓣读书数据分析-python

(思路来自课程老师绿树)刚刚学完python数据分析的课程,决定做一个有关python数据分析的小项目,思来想去,还是决定分析豆瓣的数据,因为豆瓣是python写成的。用python爬虫抓取数据较为方便,比一般网站少很多页面bug问题,而且豆瓣上的数据量大概在million这个量级,算是算太大的,但也不小。正好手里有一份跑出的大概300多万的数据,直接开始分析。

首先导入数据,将数据赋给一个dataframe,取名为douban

douban=pd.read_table("douban.dat",sep="::",names=["user","book","rate"])

看一下这个数据的描述 

总共3648104行,其他的诸如平均数,中位数的值,是豆瓣书籍的链接后缀,并无实际意义。

然后关于豆瓣读书用户

user_count=douban.groupby('user').count()

user_count=user_count.sort('book',ascending=False)

、我们发现共有38万多读者,计数最多的一位eastwolf东狼,真的很厉害,一共写了4000多的书评。不过我们不排除这是个机器人或者公众号,因为4000度书评,就算一天看一本书,也要写11年,而豆瓣创建才不过11年。有点假,不过这个问题我们暂且不谈,仅从数据来看,第一名最爱读书的书霸,就是eastwolf了,大家鼓掌。

然后我们再来看一下书籍的信息

看一下描述

最受欢迎的书有2071个书评,平均每本书大概有45个书评。

看一下具体情况

我们挑出书评最多的10本,找到图片,就是以下这10本书

可以发现由于不同出版社不同翻译的问题,10本书实际是4本,豆瓣果然是文艺青年聚集地,《小王子》《追风筝的人》《活着》几乎就是文艺青年必备了。 

  豆瓣做为文艺青年聚集地,本身用户属于素质较高的群体。里面分很多小组,读书,电影,音乐,算是给大家找志同道合之友的好地方。关于读书这个方面,在大家都很爱读书的基础上,我们可以用户进行聚类分析。依靠的根据是对书籍的打分,这样来计算不同用户之间的距离。因为读的书目越相似,对同一本书打分结果越接近,说明价值观越相同,找出这样的相似者,就能给用户推荐一下潜在的‘同志’,算是给豆瓣增加一个社交功能了。

  首先我们把用户信息和书本信息结合,因为考虑到大部分书籍用户之间交集为空,而且我的电脑的处理能力有限,所以截取了用户和书籍的前100进行分析,这样得到一个新的dataframe

然后我们建立邻近性矩阵

ubrcore=doubancore.pivot('user','book','rate') 

即使在取前100的条件下,依然大部分是空白,为了能够计算,我们把空白处替换成0.

ubrcore1=ubrcore.fillna(value=0)

然后对要进行距离计算,由于本身对书本的打分在1到5之间,纯粹的大小差距并不大,所以我们更多的考虑在方向上的差异,所以用余弦距离来反应不同用户之间的差异性。

 构建公式,并将计算结果给userdistdf这个dataframe

Userdistdf结果如下

最像用户的就是他自己,余弦距离都是1。其他人只能是部分相像,果然人生得一知己难啊。不过知己找不到,我们可以给用户找10个部分相像的‘同志’

构建函数

试一下

Bingo,成功!!!!

这样,我们可以为用户qdmimi19810920找到了10个志同道合的‘同志’了。