51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

利用PYTHON爬取豆瓣电影评论+词云

0X00前言 {#0X00%E5%89%8D%E8%A8%809546}

这份作业是我们学校的爬虫作业,今天就顺带发送到博客里
该爬虫仅供学习使用,切勿违法操作

0X01正文 {#0X01%E6%AD%A3%E6%96%876669}

该爬虫程序所须库有
requests,lxml,time
首先我们查看一下网页的源代码(右键查看,并保存到本地)
22691-0c6or8zj5n9.png

在这里,我们可以发现,每条评论的格式都为

<p class=" comment-content">           
                <span class="short">所爬的内容</span>
          </p>

所以说接下来我们用lxml的xpath来爬取,我是这么定位的:
tiqu=soup.xpath('//p[@class=" comment-content"]/span[@class="short"]/text()')
这就是第一阶段,我用来初步调试能否正常爬取。
以下附上第一阶段的代码截图

okk,已经正常爬取评论了。
然后我们进入下一阶段,开始爬取所有的连接。
首先我们先打开豆瓣网站
84944-nojknu560tq.png

点击下一页的时候连接变为

https://movie.douban.com/subject/27619748/comments?start=20&limit=20&status=P&sort=new_score

我们可以发现多了一个start参数。所以说,我们可以通过修改start参数来进行页数的切换。
经过查询目前最多到200为止。
for page in range(0,220,20):
接下来我们需要把爬取的数据保存到一个文本里

with open(r'trj1.txt', 'a+',encoding='UTF-8') as f:
   f.write(tiqu + '\n')
   f.close()

噢,一定要记得加点延迟访问。否则可能会被网站拦截!!!而且降低访问速度,对对方网站的资源占用也不会太高。最后就如下图所示。
52387-np1gjomgns9.png

如果想要方便调用的话,我们还可以利用def函数来封装。如图
35429-kg0pe10bx7.png

接下来就到了生成词云了。
(这里我直接用了系主任给的博客文章进行微调)。
不知道为什么,我文本格式是utf-8可,返回信息却是gbk.
60085-thrgzfodrk.png

不过问题不大,只需要对这个地方调整即可
02053-4kk5xd2bdxd.png

然后通过调整以下代码来令图片更好看

wc = WordCloud(
             background_color="white",  # 背景颜色
             max_words=500,  # 显示最大词数
             font_path="C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simsun_31bf3856ad364e35_10.0.18362.1_none_cd668f05ece74044\simsun.ttc",  # 使用字体,每个人的文件路径可能不同
             min_font_size=10,
             max_font_size=60,
             width=400,
             height=860,
             mask=color_mask) # 图幅宽度

附上成品图
96937-ony8p5k1vp.png

0X02文末 {#0X02%E6%96%87%E6%9C%AB1063}

这篇文章还是蛮有趣的,下一篇过几天发。感兴趣的xd麻烦github点点star
地址https://github.com/byyanxia/WinterVacationHomework

参考资料
python爬虫利器三之Xpath语法与lxml库的用法
中文常用停词
python词云实现

赞(1)
未经允许不得转载:工具盒子 » 利用PYTHON爬取豆瓣电影评论+词云