说到爬虫,大家可能第一时间想到网易云音乐的评论。网易云音乐评论中隐藏着很多宝藏,让我们一起来学习如何用python挖宝吧!既然是宝物,就必须要用钥匙加密。打开Chrome分析Headers如下。这个参数看起来挺复杂的,所以我们不需要requests来调用这个链接。这次使用硒!一款浏览器自动化测试框架!可以通过它模拟手动操作浏览器!为此,我们必须准备驱动程序chromedriver和chrome浏览器。chromedriver可以在淘宝镜像下载,选择chrome浏览器对应的版本下载。下载地址如下。http://npm.taobao.org/mirrors...整个项目使用了python3和一些第三方库。请参阅下文。fromseleniumimportwebdriverimportjiebafromwordcloudimportWordCloudfromPILimportImageimportnumpyasnp然后配置config.json{"id":"1336789644","page":200,"useCache":true,"font_path":"SimHei.ttf","mask":"mask.png","chromedriver":"chromedriver"}运行sound.py生成词云图。以及所有的评论资料阅读使用方法,然后进入分析链接!找到网易云音乐的地址,发现规律,用webdriver打开!driver=webdriver.Chrome(CONFIG['chromedriver'])driver.get(f'https://music.163.com/#/song?id={SOUND_ID}')然后让驱动跳入frame的里面的评论框。为什么driver.switch_to.frame('g_iframe')这样做?因为它无法被框架结构中的xpath解析。而评论数据正好在这个iframe中。选择其中一条评论,分析其格式结构,可以看到都是同一个类名。编写对应的xpath,得到所有评论的列表。element_list=driver.find_elements_by_xpath('//div[@class="cntf-brk"]')选择下一页按钮,分析其格式结构。您可以看到类名以前缀开头。编写对应的xpath获取下一页按钮,需要时模拟点击。next_button=driver.find_element_by_xpath('//a[starts-with(@class,"zbtnznxtjs-n-")]')driver.execute_script('arguments[0].click();',next_button)数据分析完成后,就该生成结果了。将评论列表保存为json。withopen(filePath,'w')asf:json.dump(comments_list,f,ensure_ascii=False,indent=4)使用jieba分词和wordcloud生成词云图。#词云处理image_mask=np.array(Image.open(CONFIG['mask']))wordlist=jieba.cut(';'.join(comments_list))wordcloud=WordCloud(font_path=CONFIG['font_path'],background_color='white',mask=image_mask,scale=1.5).generate(''.join(wordlist))#保存图片wordcloud.to_file(f'./result/{SOUND_ID}-{PAGES}.png')以上就是使用selenium爬取网易云音乐评论的整个步骤!本文仅供个人学习交流,请勿用于其他用途!完整代码参考
