Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

我想大家都聽過音樂《驚雷》吧,這是最近很火的一首歌,聽說拿下了60億的流量。楊坤在直播中懟《驚雷》,所以我就想看看網絡上是怎麼樣評論這首歌的。開始今天的爬蟲之旅吧!!

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!


第一步,我們先分析網頁。網頁的地址為:

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

首先還是需要打開開發者工具,找到API接口。

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

API的接口位置

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

數據信息


一般來說,接口的信息都是在XHR這個類目中。所以當你爬多了,自然就有經驗了。但是這裡出現了一個問題:這個接口是需要傳遞兩個參數的,但是這兩個參數都被加密了,這就很麻煩了,如下圖所示:

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

加密參數

那麼就需要解密了,當然我已經解密成功了,在這裡我就不說了,因為不是很難,主要用的是js的加密技巧。只要大家熟悉js,那就問題不是很大。

但是對於不會解密的小夥伴來說,這怎麼辦呢?

沒事,下面我們就使用selenium來完成。


在上一步,我們基本上把 網站分析完畢,現在要做的就是發起請求,獲取響應了。今天使用的是selenium。selenium是自動化測試的一個工具,模擬人的行為。

首先,需要安裝selenium庫,並下載驅動。

安裝:pip install selenium

驅動下載地址:

https://chromedriver.chromium.org/downloads

即可獲取驅動,下載你對應的版本

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

谷歌瀏覽器驅動

你可以根據自己瀏覽器的版本,下載對應的驅動。我在這裡使用的是谷歌瀏覽器的驅動。那麼如何查看瀏覽器的版本號呢?如下圖所示:

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

點擊設置,按圖所示點擊

將下載好的谷歌驅動,放至Python的目錄下,即可。

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

驅動所在的位置

至此,selenium環境配置成功。


現在就開始來寫代碼了,首先要將驅動導入進來


<code>from selenium import webdriver/<code>

接下來創建一個類:初始化url和驅動對象





<code>class WangYiYun(object):    def __init__(self, url):        self.url = url        self.driver = webdriver.Chrome()/<code>



接下來要做的就是獲取數據了,在這一步,我創建了一個getConten這個方法


















<code>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)/<code>

在這一步,要做的是訪問url地址,通過js代碼將滾動條下拉,因為網易雲音樂是屬於一個網頁嵌套另外一個網頁,所以這裡要做的就是獲取到第一個iframe。如下圖所示:

Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

iframe位置

接下來就是下拉之後通過xpath提取到每一個評論和下一頁的按鈕,並點擊和保存數據。


接下來要做的就是保存數據了,這個比較簡單,我就不做過多的敘述了,直接上代碼




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



數據保存完畢之後,那麼肯定要做一個可視化操作吧,假如你在公司工作,那麼老闆喜歡看到的不是這些密密麻麻的文字評論,而是要看報表對吧,那我就做一個詞雲方便大家觀看。

這裡使用了中文分詞庫jieba和詞雲庫wordcloud


















<code>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')/<code>


Python爬蟲之網易雲《驚雷》評論!好不好聽評論說了算!

詞雲效果


—— E N D ——

好了,到這裡又要跟大家說再見的時候了。希望我的文章能帶給您知識,帶給您幫助!同時也謝謝您能抽出寶貴的時間閱讀,創作不易,如果您喜歡的話,點個關注再走吧。您的支持是我創作的動力,希望今後能帶給大家更多優質的文章。


分享到:


相關文章: