Python爬取《冰雪奇缘2》豆瓣影评
程序员文章站
2022-07-02 12:26:14
前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者: 刘铨@CCIS Lab PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3 ......
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: 刘铨@ccis lab
ps:如有需要python学习资料的小伙伴可以加点击下方链接自行获取
一、分析url
1、分析豆瓣影评url
首先在豆瓣中,找到我们想要爬取的电影《冰雪奇缘2》
2、查看影片评论
二、爬取评论
分析网页源码
分析源码,可以看到评论在<span class="short">这个标签中,即代码为:
1 import urllib.request 2 from bs4 import beautifulsoup 3 4 def gethtml(url): 5 """获取url页面""" 6 headers = {'user-agent':'mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/62.0.3202.94 safari/537.36'} 7 req = urllib.request.request(url,headers=headers) 8 req = urllib.request.urlopen(req) 9 content = req.read().decode('utf-8') 10 return content 11 12 def getcomment(url): 13 """解析html页面""" 14 html = gethtml(url) 15 soupcomment = beautifulsoup(html, 'html.parser') 16 comments = soupcomment.findall('span', 'short') 17 onepagecomments = [] 18 for comment in comments: 19 onepagecomments.append(comment.gettext()+'\n') 20 return onepagecomments 21 22 if __name__ == '__main__': 23 f = open('冰雪奇缘2.txt', 'w', encoding='utf-8') 24 for page in range(10): # 豆瓣爬取多页评论需要验证。 25 url = 'https://movie.douban.com/subject/25887288/comments?start=' + str(20*page) + '&limit=20&sort=new_score&status=p' 26 print('第%s页的评论:' % (page+1)) 27 print(url + '\n') 28 for i in getcomment(url): 29 f.write(i) 30 print(i) 31 print('\n')
这里要注意的是,未登录用户只能查看前十页的评论,爬取更多评论需要先模拟登录。
三、进行词云展示
数据抓取下来之后,我们就来使用词云分析一下这部电影:
1、使用结巴分词
因为我们下载的影评是一段一段的文字,而我们做的词云是统计单词出现的次数,所以需要先分词。
1 import matplotlib.pyplot as plt 2 from wordcloud import wordcloud 3 from scipy.misc import imread 4 import jieba 5 6 text = open("冰雪奇缘2.txt","rb").read() 7 #结巴分词 8 wordlist = jieba.cut(text,cut_all=false) 9 wl = " ".join(wordlist)
2、使用词云分析
1 #设置词云 2 wc = wordcloud(background_color = "white", #设置背景颜色 3 mask = imread('black_mask.png'), #设置背景图片 4 max_words = 2000, #设置最大显示的字数 5 stopwords = ["的", "这种", "这样", "还是","就是", "这个", "没有" , "一个" , "什么", "电影", "一部","第一部", "第二部"], #设置停用词 6 font_path = "c:\windows\fonts\simkai.ttf", # 设置为楷体 常规 7 #设置中文字体,使得词云可以显示(词云默认字体是“droidsansmono.ttf字体库”,不支持中文) 8 max_font_size = 60, #设置字体最大值 9 random_state = 30, #设置有多少种随机生成状态,即有多少种配色方案 10 ) 11 myword = wc.generate(wl)#生成词云 12 wc.to_file('result.png') 13 14 #展示词云图 15 plt.imshow(myword) 16 plt.axis("off") 17 plt.show()
最终结果: