zoukankan      html  css  js  c++  java
  • Python爬取《冰雪奇缘2》豆瓣影评

    前言

    文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    作者: 刘铨@CCIS Lab

    PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

    http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

    一、分析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()+'
    ')
    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 + '
    ')
    28         for i in getComment(url):
    29             f.write(i)
    30             print(i)
    31         print('
    ')

    这里要注意的是,未登录用户只能查看前十页的评论,爬取更多评论需要先模拟登录。

    三、进行词云展示

    数据抓取下来之后,我们就来使用词云分析一下这部电影:

    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:WindowsFontssimkai.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()

    在这里插入图片描述 最终结果: 在这里插入图片描述 .

  • 相关阅读:
    [Android 4.4.4] 泛泰A850 三版通刷 Mokee4.4.4 KTU84P 20140626 RC2.2 by syhost
    YUV12(420) (from)to RGB24
    Python图像处理(16):图像金字塔
    内存管理笔记(分页,分段,逻辑地址,物理地址)【转】
    Linux内核分析--内核中的数据结构双向链表【转】
    标准IO与文件IO 的区别【转】
    Linux中设备号及设备文件【转】
    静态编译和动态编译的区别【转】
    嵌入式系统 Boot Loader 技术内幕【转】
    理解 Linux 的硬链接与软链接【转】
  • 原文地址:https://www.cnblogs.com/Qqun821460695/p/11928342.html
Copyright © 2011-2022 走看看