Python爬虫之网易云《惊雷》评论!好不好听评论说了算!

我想大家都听过音乐《惊雷》吧,这是最近很火的一首歌,听说拿下了60亿的流量。杨坤在直播中怼《惊雷》,所以我就想看看网络上是怎么样评论这首歌的。开始今天的爬虫之旅吧!!

 

第一步,我们先分析网页。网页的地址为:

https://music.163.com/#/song?id=1431580747

首先还是需要打开开发者工具,找到API接口。

API的接口位置

数据信息

 

一般来说,接口的信息都是在XHR这个类目中。所以当你爬多了,自然就有经验了。但是这里出现了一个问题:这个接口是需要传递两个参数的,但是这两个参数都被加密了,这就很麻烦了,如下图所示:

加密参数

那么就需要解密了,当然我已经解密成功了,在这里我就不说了,因为不是很难,主要用的是js的加密技巧。只要大家熟悉js,那就问题不是很大。

但是对于不会解密的小伙伴来说,这怎么办呢?

没事,下面我们就使用selenium来完成。

二 

 

在上一步,我们基本上把 网站分析完毕,现在要做的就是发起请求,获取响应了。今天使用的是selenium。selenium是自动化测试的一个工具,模拟人的行为。

首先,需要安装selenium库,并下载驱动。

安装:pip install selenium

驱动下载地址:

https://chromedriver.chromium.org/downloads

当然你也可以公众号回复:谷歌驱动

即可获取驱动,下载你对应的版本

谷歌浏览器驱动

你可以根据自己浏览器的版本,下载对应的驱动。我在这里使用的是谷歌浏览器的驱动。那么如何查看浏览器的版本号呢?如下图所示:

点击设置,按图所示点击

将下载好的谷歌驱动,放至Python的目录下,即可。

驱动所在的位置

至此,selenium环境配置成功。

 

现在就开始来写代码了,首先要将驱动导入进来

  •  
from selenium import webdriver

接下来创建一个类:初始化url和驱动对象

  •  
  •  
  •  
  •  
class WangYiYun(object):    def __init__(self, url):        self.url = url        self.driver = webdriver.Chrome()

 

 

接下来要做的就是获取数据了,在这一步,我创建了一个getConten这个方法

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
def getContent(self):    self.driver.get(self.url)    js = 'window.scrollBy(0,8000)'    # self.driver.execute_async_script(js)    self.driver.switch_to.frame(0)    self.driver.execute_script(js)    for page in range(413):        selectors = self.driver.find_elements_by_xpath('//div[@class="cmmts j-flag"]/div')        # print(selectors.find_element_by_xpath(''))        for selector in selectors:            text = selector.find_element_by_xpath('.//div[@class="cnt f-brk"]').text            list_text = text.split(':')            text = list_text[1]            WangYiYun.save_text(text)        next_page = self.driver.find_element_by_partial_link_text('下一页')        next_page.click()        time.sleep(5)

在这一步,要做的是访问url地址,通过js代码将滚动条下拉,因为网易云音乐是属于一个网页嵌套另外一个网页,所以这里要做的就是获取到第一个iframe。如下图所示:

iframe位置

接下来就是下拉之后通过xpath提取到每一个评论和下一页的按钮,并点击和保存数据。

 

接下来要做的就是保存数据了,这个比较简单,我就不做过多的叙述了,直接上代码

  •  
  •  
  •  
def save_text(item):    with open('content.txt', 'a', encoding='utf-8') as f:        f.write(str(item) + '\n')

 

 

数据保存完毕之后,那么肯定要做一个可视化操作吧,假如你在公司工作,那么老板喜欢看到的不是这些密密麻麻的文字评论,而是要看报表对吧,那我就做一个词云方便大家观看。

这里使用了中文分词库jieba和词云库wordcloud

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
import wordcloudimport jiebaf = open('content.txt', encoding='utf-8')txt = f.read()txt_list = jieba.lcut(txt) # 分词# print(txt_list)string = ''.join(txt_list)# print(string)w = wordcloud.WordCloud(width=1000,                        height=1000,                        background_color='white',                        font_path='msyh.ttc',                        scale=15,                        stopwords={' '})w.generate(string)w.to_file('content1.png')

 

词云效果

 

—— E N D ——

好了,到这里又要跟大家说再见的时候了。希望我的文章能带给您知识,带给您帮助!同时也谢谢您能抽出宝贵的时间阅读,创作不易,如果您喜欢的话,点个关注再走吧。您的支持是我创作的动力,希望今后能带给大家更多优质的文章。

源码获取加群哦:850591259

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值