如何自動下載網易雲音樂評論

本次例子是如何用Selenium來自動獲取網易雲某首歌的評論

例如許飛的父親寫的散文詩:https://music.163.com/#/song?id=417250673
在這裏插入圖片描述

1、準備工作

首先需要下載chromedrive,並需要在代碼裏指定路徑,chromedrive版本號需要對應。

from selenium import webdriver
driver = webdriver.Chrome(executable_path='chromedriver.exe')    # Chrome瀏覽器
driver.get("https://www.baidu.cn")

2、爬取流程

selenium是模擬人操作電腦的過程,類似遊戲自動點擊的腳本。流程十分簡單:

  1. 模擬網站登陸到改頁面(這個例子不需要賬號密碼登陸,因此十分簡答)
  2. 用各種手段 如XPath來獲取需要的內容
  3. 保存數據

3、完整代碼

# -*- coding=utf-8 -*-
from selenium import webdriver
import time

class YunSpider(object):
    #初始化
    def __init__(self,url):
        self.url = url
        self.driver = webdriver.Chrome(executable_path='chromedriver.exe')

#打開網站,實例方法
    def getContent(self):
        self.driver.get(self.url)
        #進入內嵌網頁
        self.driver.switch_to.frame(0) #0代表是第一個框
        js = 'window.scrollBy(0,8000)'
        self.driver.execute_script(js)
        #翻頁
        for page in range(2):
            # //任意節點 .//從上個節點開始 /下面一個節點
            selectors = self.driver.find_elements_by_xpath('//div[@class="cmmts j-flag"]/div')
            for selector in selectors:
                text = selector.find_element_by_xpath('.//div[@class="cnt f-brk"]').text
                # print(text)
                # self.saveData(text)
                YunSpider.saveData(text)

            #找到下一頁的元素點擊
            # find_element_by_partial_link_text 獲取文本鏈接,模糊匹配
            nextPage = self.driver.find_element_by_partial_link_text('下一頁')
            # 點擊下一頁
            nextPage.click()
            time.sleep(0.5)

    @staticmethod
    def saveData(item):
        with open('yun.txt','a',encoding='utf-8') as f:
            f.write(item + '\n')
            f.write('*'*20 + '\n')

if __name__ == '__main__':
    url = 'https://music.163.com/#/song?id=417250673'
    yunspder = YunSpider(url)
    yunspder.getContent()

最後顯示爬出的結果:
在這裏插入圖片描述
總結: 該例子很簡單,複雜的內容爬取還需多學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章