python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法

Posted 码猿手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法相关的知识,希望对你有一定的参考价值。

本文旨在提供爬取豆瓣电影《我不是药神》评论和词云展示的代码样例
1、分析URL
2、爬取前10页评论
3、进行词云展示
1、分析URL
我不是药神 短评
第一页url
https://movie.douban.com/subject/26752088/comments?start=0&limit=20&sort=new_score&status=P
第二页url
https://movie.douban.com/subject/26752088/comments?start=20&limit=20&sort=new_score&status=P



第十页url
https://movie.douban.com/subject/26752088/comments?start=180&limit=20&sort=new_score&status=P
分析发现每次变化的只是…strat=后面的数字,其他内容不变,可以以此遍历每一页的评论。
2、爬取前10页评论
代码:
import urllib.request
from bs4 import BeautifulSoup

def getHtml(url):
    """获取url页面"""
    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\'}
    req = urllib.request.Request(url,headers=headers)
    req = urllib.request.urlopen(req)
    content = req.read().decode(\'utf-8\')

    return content


def getComment(url):
    """解析HTML页面"""
    #html = getHtml(url)
    response = urllib.request.urlopen(url)
    html = response.read()
    html = html.decode(\'utf-8\',\'ignore\')
   soupComment = BeautifulSoup(html, \'html.parser\')

    comments = soupComment.findAll(\'span\', \'short\')
    onePageComments = []
    for comment in comments:
        # print(comment.getText()+\'\\n\')
        onePageComments.append(comment.getText()+\'\\n\')

    return onePageComments


if __name__ == \'__main__\':
    f = open(\'我不是药神page10.txt\', \'w\', encoding=\'utf-8\') 
    for page in range(10): #爬取10页的评论
        url = \'https://movie.douban.com/subject/26752088/comments?start=\' + str(20*page) + \'&limit=20&sort=new_score&status=P\'
        print(\'第%s页的评论:\' % (page+1))
        print(url + \'\\n\')
        for i in getComment(url):
            f.write(i)
            print(i)
        print(\'\\n\')

★★问题出现:
(1)当IDLE Python3.5运行时出现下面问题:

运行结果的文件“我不是药神page10.txt”是空白的
(2)在cmd下运行出现:

运行结果的文件“我不是药神page10.txt”是只有一小部分
★★★★完美解决办法:
修改控制台编码:

命令行输入  chcp

输出显示:活动代码页: 936

表示当前的编码是默认的gbk

修改编码:

命令行输入  chcp 65001

表示转换成utf8

然后在cmd运行python a.py(文件名)就可以成功print爬取的中文文章

★★★★★★★★常见编码:

utf8	所有语言
gbk	简体中文
gb2312	简体中文
gb18030	简体中文
big5	繁体中文
big5hkscs	繁体中文

3、进行词云展示
代码:
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from scipy.misc import imread
import jieba

text = open("我不是药神page20.txt","rb").read()
#结巴分词
wordlist = jieba.cut(text,cut_all=True)
wl = " ".join(wordlist)
#print(wl)#输出分词之后的txt


#把分词后的txt写入文本文件
fenciTxt  = open("fenciHou.txt","w+")
fenciTxt.writelines(wl)
fenciTxt.close()


#设置词云
wc = WordCloud(background_color = "white", #设置背景颜色
           mask = imread(\'hai.jpg\'),  #找张图片设置背景图片
           max_words = 2000, #设置最大显示的字数
           stopwords = ["的", "这种", "这样", "还是", "就是", "这个"], #设置停用词
           font_path = "C:\\Windows\\Fonts\\simkai.ttf",  # 设置为楷体 常规
    #设置中文字体,使得词云可以显示(词云默认字体是“DroidSansMono.ttf字体库”,不支持中文)
           max_font_size = 60,  #设置字体最大值
           random_state = 30, #设置有多少种随机生成状态,即有多少种配色方案
)
myword = wc.generate(wl)#生成词云
wc.to_file(\'result.jpg\')

#展示词云图
plt.imshow(myword)
plt.axis("off")
plt.show()

结果:

以上是关于python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法的主要内容,如果未能解决你的问题,请参考以下文章

爬取豆瓣网影评数据并进行简单分析与展示

用Python爬虫对豆瓣《敦刻尔克》影评进行词云展示

Python3.6+jieba+wordcloud 爬取豆瓣影评生成词云

简单爬取《小丑》电影豆瓣短评生成词云

Python爬虫简单实例——豆瓣电影评论数据的爬取

使用Python分析《我不是药神》电影豆瓣评论