Python控制浏览器自动下载歌词评论并生成词云图
作者:嗨学编程 发布时间:2022-04-17 11:24:56
一、前言
一首歌热门了,参与评论的人也很多,那我们有时候想看看评论,也只能看看热门的评论,大部分人都说的什么,咱也不知道呀~
那本次咱们就把歌词给自动下载保存到电脑上,做成词云图给它分析分析…
二、准备工作
1.需要用的模块
本次用到的模块和包:
re # 正则表达式 内置模块
selenium # 实现浏览器自动操作的
jieba # 中文分词库
wordcloud # 词云图库
imageio # 图像模块
time # 内置模块
需要安装的模块安装方法:
以 selenium 为例,直接pip install selenium
下载速度慢就用镜像源下载
2.驱动安装
那么要实现浏览器自动操作,咱们得安装一个浏览器驱动。
网址我就不发了,网上直接搜谷歌浏览器驱动就可以找到,实在找不到的话在左侧扫一下,文章看不懂也有视频在左侧扫码。
建议用谷歌浏览器,以谷歌浏览器为例,首先看一下咱们浏览器的的版本。
浏览器右上角三个点,点开后点击设置。
然后点击关于Chrome ,右边的那一串数字就是版本号了。
然后找到跟你的版本号相同的版本下载,没有相同的就下载最相近的版本也可以。
然后把驱动跟你的代码放到一起,跟代码放一起的话,缺点是你每次要使用,没保存的话都得去下载。
还有一种办法是直接放到你的python目录,这种的优点是一次搞定可以用很多次。缺点是每次版本更新,你还是得去下载新的。
我反正每次都是去下载新的,又不是经常用。
三、下载歌词
先把要用的模块给导入一下
from selenium import webdriver
import re
import time
Python文件名或者包名不要命名为selenium,会导致无法导入。
webdriver可以认为是浏览器的驱动器,要驱动浏览器必须用到webdriver,支持多种浏览器。
创建一个浏览器对象
driver = webdriver.Chrome()
请求页面
driver.get('https://music.163.com/#/song?id=569213220')
driver.implicitly_wait(10) # 隐式等待 浏览器渲染页面 智能化等待
driver.maximize_window() # 最大化浏览器
网页嵌套, 进入嵌套网页。
driver.switch_to.frame(0)
下拉页面 js 是一门可以直接运行在浏览器中的语言
# document.documentElement.scrollTop 指定页面的高度
# document.documentElement.scrollHeight 获取页面的高度
# document.documentElement.scrollTop 指定页面的高度
# document.documentElement.scrollHeight 获取页面的高度
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight'
driver.execute_script(js)
获取评论数据/保存/点击下一页
for click in range(10):
divs = driver.find_elements_by_css_selector('.itm')
for div in divs:
cnt = div.find_element_by_css_selector('.cnt.f-brk').text
cnt = cnt.replace('\n', ' ') # 替换换行符
cnt = re.findall(':(.*)', cnt)[0]
with open('contend.txt', mode='a', encoding='utf-8') as f:
f.write(cnt + '\n')
# 找到下一页标签点击
driver.find_element_by_css_selector('.znxt').click()
time.sleep(1)
input('程序阻塞.')
退出浏览器
driver.quit()
来看看效果
四、词云图
绘制词云图/大小设置
import jieba # 中文分词库
import wordcloud # 词云图库
import imageio # 图像模块
file = open('contend.txt', mode='r', encoding='utf-8')
txt = file.read()
# print(txt)
txt_list = jieba.lcut(txt)
print('分词结果',txt_list)
string = ' '.join(txt_list)
print('合并分词:', string)
"""制作词云图"""
# 读取图像
img = imageio.imread('音乐.png')
# 设置词云图
wc = wordcloud.WordCloud(
width=1000, # 词云图的宽
height=700, # 图片的高
background_color= 'black', # 词云图背景颜色
font_path='msyh.ttc', # 词云字体, 微软雅黑, 系统自带
scale=10, # 字体大小
# mask=img,
stopwords=set([line.strip() for line in open('cn_stopwords.txt', mode='r',
encoding='utf-8').readlines()])
)
print('正在绘制词云图')
wc.generate(string)
wc.to_file('output2.png')
print('词云图制作成功...')
效果展示
来源:https://blog.csdn.net/fei347795790/article/details/122394243


猜你喜欢
- 首先,我们先来看看,如果是人正常的行为,是如何获取网页内容的。(1)打开浏览器,输入URL,打开源网页(2)选取我们想要的内容,包括标题,作
- 本文实例讲述了Go语言Web编程实现Get和Post请求发送与解析的方法。分享给大家供大家参考,具体如下:这是一篇入门文章,通过一个简单的例
- 增加索引可以提高查询效率。增加索引就是增加一个索引文件,存放的是数据的地址,类似与我们文档的目录,在查找过程中可以不用从书的内容查找,直接根
- 本文实例讲述了Python PyAutoGUI模块控制鼠标和键盘实现自动化任务。分享给大家供大家参考,具体如下:PyAutoGUI是用Pyt
- 前言在制作论文插图时,有时要求将图片的局部放大来展示细节内容,同时将放大图拼接在原图上以方便观察对比。当然直接利用电脑自带的画图软件或者别的
- 统计十篇新闻TF-IDF统计TF-IDF词频,每篇文章的 top10 的高频词存储为 json 文件TF-IDFTF-IDF(term fr
- 条形图普通条形图ggplot(df,],aes(x=group,y=value))+geom_bar(stat = "identi
- 而今天我们要说的内容是:如果在网页中存在文件资源,如:图片,电影,文档等。怎样通过Python爬虫把这些资源下载下来。1、怎样在网上找资源:
- 本文实例为大家分享了JSP实现客户信息管理系统的具体代码,供大家参考,具体内容如下项目示意图大概这样吧。我自己画的 登录界面代码index.
- 写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是
- 什么是标签平滑?在PyTorch中如何去使用它?在训练深度学习模型的过程中,过拟合和概率校准(probability calibration
- 一个不错的网页拾色器也叫调色版,请看截图:当想要更多颜色时点击“其它颜色...”此时将调用系统自带的那个颜色选择框:注意:只有把〈scrip
- 一. 概念理解你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会
- 1.2 本篇文章内容概要1.3 本篇文章内容概括在SQL语句中,关于表连接,若按照表的数量来划分,可以划分为单表连接、两表连接和两表以上连接
- 在Mac上按照官网教程安装成功tensor flow后,但在程序中导入时,仍然报错,包括但不限于以下两个错误。对于这种错误,原因主要在于Ma
- 前言最近用Django写项目的时候用到了数据的传递,一窍不通,查了点资料。记录一下。水平不高,瓜不保熟。 从两方面来说:从后端传递
- 问题最近在Laravel项目中用到了百度编辑器,插入到数据库我保存的是原始的html标签代码,没有进行实体转义。然后在修改的时候,需要读取到
- 一、定义集合中的元素是无序的、唯一的、不可变的类型。集合是一个特殊的列表,可以对数据去重。lists = [1,3,5,7,3,4,6,2,
- 这里有一些很棒的自动化脚本,你可以在你的 Python 项目中使用它们。在做项目的时候,我们需要一些现成的代码来帮助我们解决日常生活中的问题
- df.fillna主要用来对缺失值进行填充,可以选择填充具体的数字,或者选择临近填充。官方文档DataFrame.fillna(self,