国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

小白都懂的Python爬蟲之網易云音樂下載

SoapEye / 2089人閱讀

摘要:完整代碼如下正在下載根據網易云歌曲的直接下載歌曲上安裝爬取網易云歌曲源碼地址

首發知乎:https://zhuanlan.zhihu.com/p/...

目標

偶然的一次機會聽到了房東的貓的《云煙成雨》,瞬間迷上了這慵懶的嗓音和學生氣的歌詞,然后一直去循環聽她們的歌。然后還特意去刷了動漫《我是江小白》,好期待第二季...

我多想在見你,哪怕匆匆一眼就別離...

好了,不說廢話了。這次的目標主要是根據網易云中歌手的ID,下載該歌手的熱門音樂的歌詞和音頻,并保存到本地的文件夾中。

配置基礎

Python

Selenium(配置方法參照:Selenium配置)

Chrome瀏覽器(其它的也可以,需要進行相應的修改)

分析

如果爬取過網易云的網站的小伙伴都應該知道網易云是有反爬取機制的,POST時需要對一些信息的參數進行加密函數的模擬。但是這里為了簡便,小白也能理解。直接使用了Selenium來模擬登錄,然后使用接口來直接下載音樂和歌詞。

實驗步驟

根據歌手ID獲取該歌手的熱門歌曲列表,歌曲名稱和鏈接,并保存到csv文件中;

讀取csv文件,根據歌曲鏈接,提取歌曲ID,然后利用相應的接口,下載音樂和歌詞;

將音樂和歌詞保存到本地。

Python實現

該部分將對幾個關鍵的函數進行介紹...

獲取歌手信息

利用Selenium我們就不需要看對網頁的請求了,直接可以從網頁源碼中提取相應的信息。查看歌手頁面源碼可以發現,我們需要的信息在iframe框架內,所以我們先需要切換到iframe:

browser.switch_to.frame("contentFrame")

繼續往下看,發現我們需要的歌曲名字和鏈接是在id="hotsong-list"的標簽中,然后每一行對應的是一個tr標簽。所以先獲取所有的tr內容,然后遍歷單個tr

data = browser.find_element_by_id("hotsong-list").find_elements_by_tag_name("tr")

注意:前一個是find_element,后一個是find_elements,后者返回一個列表。

接下來就是解析單個tr標簽的內容,獲取歌曲名字和鏈接,可以發現兩者在class="txt"標簽中,而且鏈接是href屬性,名字是title屬性,可以直接通過get_attribute()函數獲取。

for i in range(len(data)):
    content = data[i].find_element_by_class_name("txt")
    href = content.find_element_by_tag_name("a").get_attribute("href")
    title = content.find_element_by_tag_name("b").get_attribute("title")
    song_info.append((title, href))

下載歌詞

網易云有個獲取歌詞的接口,鏈接為:http://music.163.com/api/song...

鏈接中的數字就是歌曲的id,所以我們擁有歌曲id后,可以直接從該鏈接下載歌詞,歌詞文件是json格式,所以我們需要用到json包。

而且直接獲取的歌詞中,每行有一個時間軸,需要用正則表達式來剔除,完整代碼如下:

def get_lyric(self):
    url = "http://music.163.com/api/song/lyric?" + "id=" + str(self.song_id) + "&lv=1&kv=1&tv=-1"
    r = requests.get(url)
    json_obj = r.text
    j = json.loads(json_obj)
    lyric = j["lrc"]["lyric"]
    # 利用正則表達式去除時間軸
    regex = re.compile(r"[.*]")
    final_lyric = re.sub(regex, "", lyric)
    return final_lyric

下載音頻

網易云也提供了音頻文件的接口,鏈接為:http://music.163.com/song/med...

鏈接中的數字為歌曲的id,可以直接根據歌曲的id來下載音頻文件。完整代碼如下:

def get_mp3(self):
    url = "http://music.163.com/song/media/outer/url?id=" + str(self.song_id)+".mp3"
    try:
        print("正在下載:{0}".format(self.song_name))
        urllib.request.urlretrieve(url, "{0}/{1}.mp3".format(self.path, self.song_name))
        print("Finish...")
    except:
        print("Fail...")

Reference

python 根據網易云歌曲的ID 直接下載歌曲

Windows上安裝Selenium爬取網易云歌曲

源碼地址

Github:Link

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42307.html

相關文章

  • 淺談機器學習入門實踐

    摘要:機器學習的過程機器學習的流程可以概括為幾大部分,分別是設置數據集劃分訓練集和測試集構建計算網絡訓練模型測試模型以及其他一些環節。機器學習在某些時候,很接近于線性回歸,而這個庫很適合用來創建大量的數字集合。 網上關于機器學習的文章,視頻不計其數,本來寫這么一篇東西,我自己也覺得有點多余,但是我還真沒找到一個能幫助像我這樣零基礎的人,快速接觸和上手機器學習的文章。這篇文章不能讓你深入學習和...

    AlienZHOU 評論0 收藏0
  • 爬蟲 - 收藏集 - 掘金

    摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...

    1fe1se 評論0 收藏0
  • Python爬蟲網易音樂歌曲下載

    摘要:爬蟲之網易云音樂下載目標用根據網易云音樂的,下載音樂,保存到本地格式可以下載歌曲的范圍所有能夠聽的歌曲配置基礎模塊可選可選這是哈希函數如和和各種加密算法,,,等的集合。 Python爬蟲之網易云音樂下載 目標 用Python根據網易云音樂的ID,下載音樂,保存到本地MP3格式 可以下載歌曲的范圍:所有能夠聽的歌曲 配置基礎 Python 3.5 模塊 pycrypto base64 ...

    enrecul101 評論0 收藏0
  • 我的 Python 高效學習法

    摘要:我最開始學習編程的時候也是如此,摸索了非常久的時間,才慢慢找到自己高效學習方法。被動的學習方式聽講閱讀視聽演示,只能讓你做到內容留存率的和的知識。而主動的學習方式,如通過討論實踐教授給他人,會將原來被動學習的內容留存率從提升到和。 showImg(https://segmentfault.com/img/remote/1460000016856679); 閱讀文本大概需要 7 分鐘。 ...

    MyFaith 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<