[Python] Controle o navegador para baixar automaticamente os comentários das letras e fazer um belo mapa de nuvem de palavras

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...

insira a descrição da imagem aqui

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.
insira a descrição da imagem aqui

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.
insira a descrição da imagem aquiEm seguida, clique em Sobre o Chrome, a sequência de números à direita é o número da versão.
insira a descrição da imagem aqui
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.
insira a descrição da imagem aquiEntã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.

insira a descrição da imagem aqui

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.

  1. Criar um objeto do navegador
driver = webdriver.Chrome()
  1. 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('程序阻塞.')
  1. Saia do navegador
driver.quit()

para ver o efeito
insira a descrição da imagem aqui

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
insira a descrição da imagem aqui
, tentem, lembrem-se de curtir três ha ~

Acho que você gosta

Origin blog.csdn.net/fei347795790/article/details/122394243
Recomendado
Clasificación