Diretório de artigos
Use o selenium para baixar automaticamente os comentários das letras e criar um mapa de nuvem de palavras bonito
1. Dois bipes
Uma música é popular e há muitas pessoas participando dos comentários. Então, às vezes, queremos ler os comentários, mas só podemos ler os comentários populares. Não sabemos o que a maioria das pessoas diz~
Então, desta vez, vamos baixar e salvar automaticamente as letras no computador e fazer um mapa de nuvem de palavras para analisar...
2. Preparações
1. Módulos necessários
Módulos e pacotes usados desta vez:
re # 正则表达式 内置模块
selenium # 实现浏览器自动操作的
jieba # 中文分词库
wordcloud # 词云图库
imageio # 图像模块
time # 内置模块
O método de instalação dos módulos que precisam ser instalados:
Tome o selenium como exemplo. Se a pip install selenium
velocidade de download for lenta, use a fonte espelhada para fazer o download.
As etapas específicas não são claras, você pode ver o artigo no topo da minha página inicial , e eu escrevi em detalhes uma vez.
2. Instalação do driver
Portanto, para obter a operação automática do navegador, precisamos instalar um driver de navegador.
Não postarei o URL. Você pode encontrá-lo pesquisando o driver do navegador Google na Internet. Se não conseguir encontrá-lo, digitalize-o no lado esquerdo. Se não entender o artigo, digitalize o código no lado esquerdo.
Recomenda-se usar o Google Chrome, tome o Google Chrome como exemplo, primeiro veja a versão do nosso navegador.
Clique nos três pontos no canto superior direito do navegador e clique em Configurações.
Em seguida, clique em Sobre o Chrome, a sequência de números à direita é o número da versão.
Em seguida, encontre a versão com o mesmo número de versão que você e faça o download. Se você não tiver a mesma versão, poderá fazer o download da versão mais próxima.
Então coloque o driver junto com o seu código, se você juntar com o código, a desvantagem é que toda vez que você quiser usar, você tem que fazer o download caso não salve.
Outra maneira é colocá-lo diretamente em seu diretório python, a vantagem disso é que ele pode ser usado muitas vezes depois de pronto. A desvantagem é que toda vez que a versão é atualizada, você ainda precisa baixar a nova.
Eu baixo novos sempre de qualquer maneira, e eu não os uso com muita frequência.
3. Baixe as letras
Primeiro importe os módulos que você deseja usar
from selenium import webdriver
import re
import time
Não nomeie o nome do arquivo Python ou o nome do pacote como selenium, pois isso fará com que ele falhe na importação.
O Webdriver pode ser considerado como o driver do navegador. Para conduzir o navegador, você deve usar o webdriver, que suporta vários navegadores.
- Criar um objeto do navegador
driver = webdriver.Chrome()
- página de solicitação
driver.get('https://music.163.com/#/song?id=569213220')
driver.implicitly_wait(10) # 隐式等待 浏览器渲染页面 智能化等待
driver.maximize_window() # 最大化浏览器
Aninhamento de página da Web, insira a página da Web aninhada.
driver.switch_to.frame(0)
A página suspensa js é uma linguagem que pode ser executada diretamente no navegador
# document.documentElement.scrollTop 指定页面的高度
# document.documentElement.scrollHeight 获取页面的高度
# document.documentElement.scrollTop 指定页面的高度
# document.documentElement.scrollHeight 获取页面的高度
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight'
driver.execute_script(js)
Obter dados de comentários/salvar/clique na próxima página
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('程序阻塞.')
- Saia do navegador
driver.quit()
para ver o efeito
Quatro, mapa de nuvem de palavras
Desenhe configurações de mapa/tamanho da nuvem de palavras
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('词云图制作成功...')
Irmãos de exibição de efeitos
, tentem, lembrem-se de curtir três ha ~