Python爬取網易雲歌曲評論,做詞雲分析
阿新 • • 發佈:2022-05-28
前言
emmmm 沒什麼說的,想說的都在程式碼裡
環境使用
- Python 3.8 直譯器 3.10
- Pycharm 2021.2 專業版
- selenium 3.141.0
本次要用到selenium模組,所以請記得提前下載好瀏覽器驅動,配置好環境
對於本篇文章有疑問的同學可以加【資料白嫖、解答交流群:753182387】
程式碼實現
先是安裝、匯入所需模組
from selenium import webdriver # 匯入瀏覽器的功能
import re # 正則表示式模組, 內建
import time # 時間模組, 程式延遲
1. 建立一個瀏覽器物件
driver = webdriver.Chrome()
2. 執行自動化
driver.get('https://music.163.com/#/song?id=488249475')
# selenium無法直接獲取到巢狀頁面裡面的資料
driver.switch_to.frame(0) # switch_to.frame() 切換到巢狀網頁
driver.implicitly_wait(10) # 讓瀏覽器載入的時候, 等待渲染頁面
下拉頁面, 直接下拉到頁面的底部
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight'
driver.execute_script(js)
3.解析資料
divs = driver.find_elements_by_css_selector('.itm') # 所有div css語法: 定位到 html 資料/xpath/正則
for div in divs:
cnt = div.find_element_by_css_selector('.cnt.f-brk').text
cnt = re.findall(':(.*)', cnt)[0] # 中英文有區別
print(cnt)
儲存資料
翻頁
for page in range(10): # 控制翻頁 速度太快
# 翻頁 , 找到下一頁標籤, 點選?
driver.find_element_by_css_selector('.znxt').click()
time.sleep(1)
# selenium 欲速則不達
儲存為txt檔案
with open('contend.txt', mode='a', encoding='utf-8') as f:
f.write(cnt + '\n')
執行程式碼得到結果
再做個詞雲
匯入相關模組
import jieba # 中文分詞庫 pip install jieba
import wordcloud # 製作詞雲圖的模組 pip install wordcloud
import imageio
讀取檔案資料
with open('contend.txt', mode='r', encoding='utf-8') as f:
txt = f.read()
print(txt)
詞雲圖 分詞<中文(詞語)> 基於結果
txt_list = jieba.lcut(txt)
print('分詞結果:', txt_list)
合併
string_ = ' '.join(txt_list) # 1 + 1 = 2 字串的基本語法
print('合併分詞:', string_)
建立詞雲圖
wc = wordcloud.WordCloud(
width=1000, # 圖片的寬
height=800, # 圖片的高
background_color='white', # 圖片的背景色
font_path='msyh.ttc', # 微軟雅黑
scale=15, # 詞雲圖預設的字型大小
# 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('out.png') # 儲存詞雲圖
print('詞雲圖繪製完成...')