词云图:






爬取过程:

你好,李焕英 短评的URL:

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


分析要爬取的URL;
34841067:电影ID
start=20:开始页面
limit=20:每页评论条数

代码:

url = 'https://movie.douban.com/subject/%s/comments?start=%s&limit=20&sort=new_score&status=P % (movie_id, (i - 1) * 20)

在谷歌浏览器中按F12进入开发者调试模式,查看源代码,找到短评的代码位置,查看位于哪个div,哪个标签下:

可以看到评论在div[id=‘comments’]下的div[class=‘comment-item’]中的第一个span[class=‘short’]中,使用正则表达式提取短评内容,即代码为:

url = 'https://movie.douban.com/subject/%s/comments?start=%s&limit=20&sort=new_score&status=P' \% (movie_id, (i - 1) * 20)req = requests.get(url, headers=headers)req.encoding = 'utf-8'comments = re.findall('<span class="short">(.*)</span>', req.text)

完整代码:

# 分析豆瓣你好李焕英的影评,生成词云
# https://movie.douban.com/subject/34841067/comments?start=20&limit=20&status=P&sort=new_score
# url = 'https://movie.douban.com/subject/%s/comments?start=%s&limit=20&sort=new_score&status=P '\
# % (movie_id, (i - 1) * 20)import requests
from stylecloud import gen_stylecloud
import jieba
import re
from bs4 import BeautifulSoup
from wordcloud import STOPWORDSheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0'
}def jieba_cloud(file_name, icon):with open(file_name, 'r', encoding='utf8') as f:word_list = jieba.cut(f.read())result = " ".join(word_list)    # 分词用  隔开# 制作中文词云icon_name = " "if icon == "1":icon_name = ''elif icon == "2":icon_name = "fas fa-space-shuttle"elif icon == "3":icon_name = "fas fa-heartbeat"elif icon == "4":icon_name = "fas fa-bug"elif icon == "5":icon_name = "fas fa-thumbs-up"elif icon == "6":icon_name = "fab fa-qq"pic = str(icon) + '.png'if icon_name is not None and len(icon_name) > 0:gen_stylecloud(text=result,size=1024,  # stylecloud 的大小(长度和宽度)icon_name=icon_name,font_path='simsun.ttc',max_font_size=200,  # stylecloud 中的最大字号max_words=2000,  # stylecloud 可包含的最大单词数stopwords=True,  # 布尔值,用于筛除常见禁用词custom_stopwords=STOPWORDS,output_name=pic)else:gen_stylecloud(text=result, font_path='simsun.ttc', output_name=pic)return picdef spider_comment(movie_id, page):comment_list = []with open("douban.txt", "a+", encoding='utf-8') as f:for i in range(1,page+1):url = 'https://movie.douban.com/subject/%s/comments?start=%s&limit=20&sort=new_score&status=P' \% (movie_id, (i - 1) * 20)req = requests.get(url, headers=headers)req.encoding = 'utf-8'comments = re.findall('<span class="short">(.*)</span>', req.text)f.writelines('\n'.join(comments))print(comments)# 主函数
if __name__ == '__main__':movie_id = '34841067'page = 10spider_comment(movie_id, page)jieba_cloud("douban.txt", "1")jieba_cloud("douban.txt", "2")jieba_cloud("douban.txt", "3")jieba_cloud("douban.txt", "4")jieba_cloud("douban.txt", "5")jieba_cloud("douban.txt", "6")

运行效果:






清洗词云:

可以看到炫酷的词云图了,然而仔细看的话,会发现出现了很多的”的”、“了”这样没有意义的字,很影响获取的印象,通过几个小时的折腾,终于让我找到了清洗词云的最简单的方法:
在这里加上:

        # 设置停用词stopwords_file = open('stopwords.txt', 'r', encoding='utf-8')stopwords = [words.strip() for words in stopwords_file.readlines()]


然后这里加上:

custom_stopwords=stopwords,  #定制停用词列表


这样就可以清洗掉无意义的词了!

停用词表参考:
Python文本分析之常用最全停用词表(stopwords)

stylecloud初识:

stylecloud是wordcloud优化改良版,操作简单,直接调用。

  • 可以使用 Font Awesome 提供的免费图标更改词云的形状;
  • 通过 palettable 更改调色板以自定义风格,更改背景颜色;
  • 添加梯度使颜色按照特定方向流动。

stylecloud参数详解:

text: 传入的字符串列表
file_path: 字符串的文本/ CSV的文件路径
gradient: 渐变方向 [「default:」 None]('horizontal')
size:stylecloud的大小(调大可提高图片清晰度)
icon_name: stylecloud形状的图标名称 [「default:」 fas fa-flag]
palette: 调色板 [「default:」 cartocolors.qualitative.Bold_5]
colors: 用作文本颜色的颜色 [「default:」 None]
background_color: 背景色(名称或十六进制)[「default:」 white]
max_font_size: stylecloud中的最大字体大小 [「default:」 200]
max_words: 要包含在stylecloud中的最大单词数 [「default:」 2000]
stopwords: 用于过滤掉常见的停用词 [「default:」 True]
custom_stopwords: list定制停用词列表 [「default:」 STOPWORDS, via word_cloud]
output_name: stylecloud的输出文件名 [「default:」 stylecloud.png]
font_path: 要在stylecloud中使用的字体的.ttf文件的路径 [「default:」 uses included Staatliches font]
random_state: 控制文字和颜色的随机状态 [「default:」 None]
collocations: 是否包括两个单词的搭配(二字组)。与基本word_cloud软件包的行为相同 [「default:」 True]
invert_mask: 是否反转图标掩码,因此单词填充除图标掩码以外的所有空格 [「default:」 False]

例如:

def gen_stylecloud(text=None,file_path=None,   # 输入文本/CSV 的文件路径size=512,  # stylecloud 的大小(长度和宽度)icon_name='fas fa-flag',  # stylecloud 形状的图标名称(如 fas fa-grin)。[default: fas fa-flag]palette='cartocolors.qualitative.Bold_5',  # 调色板(通过 palettable 实现)。[default: cartocolors.qualitative.Bold_6]colors=None,background_color="white",  # 背景颜色max_font_size=200,  # stylecloud 中的最大字号max_words=2000,  # stylecloud 可包含的最大单词数stopwords=True,  # 布尔值,用于筛除常见禁用词custom_stopwords=STOPWORDS,icon_dir='.temp',output_name='stylecloud.png',   # stylecloud 的输出文本名gradient=None,  # 梯度方向font_path=os.path.join(STATIC_PATH,'Staatliches-Regular.ttf'), # stylecloud 所用字体random_state=None,  # 控制单词和颜色的随机状态collocations=True,invert_mask=False,pro_icon_path=None,pro_css_path=None):

词云形状:

使用 Font Awesome 提供的免费图标更改词云的形状。

https://fontawesome.dashgame.com/


https://fa5.dashgame.com/#/%E5%9B%BE%E6%A0%87

https://fontawesome.com/icons?d=gallery

Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词云图相关推荐

  1. Python爬取你好李焕英豆瓣短评生成词云

    爬取过程: 你好,李焕英 短评的URL: https://movie.douban.com/subject/34841067/comments?start=20&limit=20&st ...

  2. Python爬取唐人街探案3豆瓣短评并生成词云

    爬取唐人街探案3短评过程 要爬取的URL: https://movie.douban.com/subject/27619748/comments?start=20&limit=20&s ...

  3. Python爬取《你好李焕英》豆瓣短评并基于SnowNLP做情感分析

    爬取过程在这里: Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词云图 本文基于前文爬取生成的douban.txt,基于SnowNLP做情感分析. 依赖库: 豆瓣镜像比较快: ...

  4. Python爬取《你好李焕英》猫眼实时票房

    Python爬取<你好李焕英>豆瓣短评并基于SnowNLP做情感分析 Python爬取你好李焕英豆瓣短评生成词云 Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词 ...

  5. 利用Python爬取《囧妈》豆瓣短评数据,并进行snownlp情感分析

    利用Python爬取<囧妈>豆瓣短评数据,并进行snownlp情感分析 一.电影评论爬取 今年的贺岁片<囧妈>上映前后,在豆瓣评论上就有不少网友发表了自己的观点,到底是好评的声 ...

  6. 利用python爬取复仇者联盟3无限战争豆瓣短评

    漫威粉丝,恰恰最近在学习python爬虫,于是就照着参考书目做了一个可以爬取豆瓣短评的爬虫,结果输出到txt文档,之后便可以进行词云分析,搞一些好玩的东西啦,话不多说,上代码. import requ ...

  7. 《你好李焕英》票房超《神奇女侠》,贾玲成全球票房最高女导演

    4月6日消息,据猫眼专业版数据显示,4月6日10时,<你好,李焕英>累计票房达到53.95亿元,超过<神奇女侠>(8.22亿美元),贾玲成为全球票房最高女导演. 此前,< ...

  8. 你好李焕英票房54亿,出品人能分多少,网友:投资水门桥能赚多少

    2021年春节档,你好李焕英在大片云集的电影市场脱颖而出,然而这部由贾玲导演的小成本电影,竟然逆袭成为了票房第一,实力赶超战狼2,哪吒之魔童降世这个火遍全国的电影,竟然甘拜下风!大多数网友不淡定了,这 ...

  9. 《你好李焕英》票房反超《唐探3》 成中国影史票房第五

    2月22日消息,上映第10天,<你好,李焕英>票房逆袭<唐人街探案3>,同时<你好,李焕英>也成为中国影史票房第五名.截至发稿,<你好,李焕英>累计票房 ...

最新文章

  1. 文件下载类型__response
  2. python下载网络错误_下载失败,出现“网络错误”+40000
  3. Android开发实践:利用ProGuard进行代码混淆
  4. 在Linux下如何安装QQ?
  5. 树链剖分 完美的想法
  6. 安卓平板排行榜_shopee虾皮台湾安卓市场, shopee虾皮直播下载
  7. 模拟退火求解TSP问题
  8. Java语言与sikuli配合
  9. Servlet - 会话跟踪
  10. selenium, firefox, python环境搭建指南
  11. ORACLE表空间使用量查询SQL
  12. catalina配置参数
  13. MFC做一个简易的登录界面
  14. Java基础(七) 房屋出租系统
  15. DayDayUp:罗振宇—2018.12.31年终秀——《时间的朋友》跨年演讲重点概览【文字+视频】
  16. vmware VCPU的一点理解记录
  17. Opencv与python实现多目标跟踪 (一) - PaddleDetection目标检测
  18. ROS中使用protoBuf通信
  19. Flutter2 的 Sound null safety ?!以及发布pub上面的null safety标签实现
  20. linux 微秒级定时,Linux下的微秒级定时器: usleep, nanosleep, select, pselect

热门文章

  1. Ubuntu16.04再次装机记
  2. You have not concluded your merge (MERGE_HEAD exists) git拉取失败
  3. 《HTML5 Canvas游戏开发实战》——3.3 自定义画板
  4. CentOS的ssh sftp配置及权限设置整理
  5. 使用base64:url 来定义背景图片url
  6. PXE安装报错:Cant' write to /dev/sda ,because it is opened read-only
  7. UiModeManager设置夜间模式和行车模式
  8. c语言高精度计算函数库
  9. oracle 10G表空间创建的步骤
  10. JAVA定时任务的简单实现