Python爬虫实战案例:爬取周董《最伟大的作品》31074条评论做词云分析


- 页面分析
- 采集程序
- 对评论分词并绘制词云图

QQ音乐的评论页面,是一个动态加载的网页,每次下拉会显示一批评论,因此可以使用selenium结合xpath解析获得评论的文本内容。《最伟大的作品》对应的网址的评论页面如下:
# 专辑网址
url = 'https://y.qq.com/n/ryqq/albumDetail/0042cH172YJ0mz'

使用xpath定位到网页中所有评论文本存放的位置:

所有评论文本对应的xpath定位:
'//*[@id="comment_box"]/div[4]/ul/li'
单个评论文本对应的xpath定位:
'//*[@id="comment_box"]/div[4]/ul/li[1]/div/p/span'
因此可以先通过定位到所有的评论位置,然后逐个定位到所有的单条评论位置。

整合第1节中的思路,开始动手,采集评论内容,并保存为 最伟大的作品评论.txt ...
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
url = 'https://y.qq.com/n/ryqq/albumDetail/0042cH172YJ0mz'
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(3) # 智能化等待:页面渲染加载过程需要时间
driver.maximize_window() # 最大化浏览器
for x in range(1, 4000, 2): # range的范围控制浏览器下拉量
time.sleep(1)
j = x / 9
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
comments = driver.find_elements(By.XPATH,'//*[@id="comment_box"]/div[4]/ul/li')
with open('最伟大作品评论.txt', mode='a', encoding='utf-8') as f:
n = 0
for i in comments:
try:
comment = i.find_elements(By.XPATH,'./div/p/span')[0].text
n += 1
print(comment,'第{}条'.format(n))
f.write(comment + '\n')
except:
continue
driver.close()
采集到的结果如下:

保存评论得到的 最伟大的作品评论.txt 文件内容如下所示:


运用jieba库对评论内容进行分词,去除标点符号和长度小于2的词,存入列表中,构建词云图:
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
#导入评论文本文件
content = open(r'最伟大作品评论.txt',encoding='utf-8')
list_all = []
for ls in content:
list_temp = ls.strip('\n')
list_all.append(list_temp)
#对list进行遍历,并将其做分词切割后生成词列表
word_list =[]
exclud = [',','!','?','《',r'\\','。','的','了',' ']
for sentence in list_all:
word_list_temp = jieba.cut(sentence)
for i in word_list_temp:
if i in exclud:
continue
else:
word_list.append(i)
word_list = [x for x in word_list if len(x)>=2]
print(word_list)
# 绘制词云图
comment_word = ' '.join(word_list)
cloud=WordCloud(font_path='simhei.ttf',background_color='white',width=1200,height=1200).generate(comment_word)
cloud.to_file('最伟大作品评论词云图.png')#保存图片
运行输出的分词列表如下(部分截图):

保存到本地的评论词云图如下:

从词云图可以看见,歌友们整体评论表露出对周董新专辑的认可,评论内容最多的是:周杰伦 真的 好听 伟大 作品 等等赞扬的内容!!!

THE END