1. 程式人生 > >Scrapy爬取網易雲音樂和評論(一、思路分析)

Scrapy爬取網易雲音樂和評論(一、思路分析)

目錄:

前提:

scrapy這個框架很多人用過,網上教程也很多,但大多就是爬爬小說這種比較簡單且有規律的,網易雲音樂也有很多人寫過,也有API,不過大多是爬取了熱門歌曲,或是從歌單下手,但是考慮到歌單會有很多重複的。當然,從歌手頁的話,如果有多個歌手合唱,那每個歌手頁也都會有這首歌,但他們的連結是一樣的,也是會有重複的,但是相對來說就比較少,所以就從歌手下手。

因為種種原因,我後來還是沒有用框架又寫了一遍。這一塊執行成功了,但是我沒有去關注數量就中斷了,就只能拿出來當教程吧。

開發環境:WIN7+Anaconda+py2.7+scrapy
資料庫:MongoDB
文章的順序

:先分析思路,再分析scrapy框架每個模組的作用,最後寫程式碼和分析API,只有5篇。

有小夥伴問我為什麼在已經出到3.x後期了我還要用2.7,肯定也很多人疑惑,回答一下。

一是習慣,不用Anaconda整合環境的話,裡面是2.7,裝各種安裝包可以整到你懷疑人生。之前還有一個便攜版,好像叫portable python,它裡面自帶各種包括pycharm,pyQT,重點是它可以裝在U盤上,我之前用過pyQT,但是不知道是配置沒配好還是怎樣,不知道怎麼執行。我U盤裡還有,網上已經找不到了。
二是術業有專攻,反正我瞭解到的都是這樣,用3的比較多的是在科學計算方面,2用的多是在爬蟲和web,其他的看具體需求,目前我還沒嘗試過。大家如果有疑惑,可以參考我的建議,對哪塊有興趣就學哪個版本。省得像我走那麼多彎路

一般情況下,確實是越新越好。 py2.7也確實有許多 不足,但是在第三方庫的相容性上,很多爬蟲庫只支援2.7。反正我當時學Scrapy的時候,本著用最先進的版本,python的最新版當時是3.4,當時不知道scrapy不支援py3,文件有限,當時python也不像現在那麼火。於是用py3.4裝2.x的scrapy,折騰半天死活都裝不好不好,當時差點一度放棄要學python。換成2也是各種問題,後來發現Anaconda這個好東西,要什麼都只需要pip install xx或者conda insall xx。這也是為什麼我至今還在用2.7的原因,懶得折騰。
現在的Anaconda也分2和3了,3能不能裝scrapy我不知道,還沒試過。如果你不想用2.7,可以先嚐試下Anaconda3裝一裝scrapy看看能不能裝成功,是哪個版本的。

一、我們先爬歌手,有兩種方法:

方法一:遍歷id

第一種是遍歷,id數大概十一二萬的樣子,大多id是相隔不遠的。

優點:遍歷比較方便,比較全。有個別歌手有主頁,但是沒有申請音樂人,只能通過自己搜尋訪問id,用這種方式比較完整。
缺點:但是這種方式會有很多404,就需要你去處理。

但我最開始用的是下面這種,我們也拿這個來分析:

方法二:從分類獲取所有入駐的歌手的id

優缺點與方法一剛好相反。

優點:不用去做404處理。
缺點:獲取歌手不完全。分類裡只有已經入駐的歌手,你仔細搜搜就會發現很多歌手的主頁只有一個收藏的標籤,卻沒有個人主頁的標籤。沒有個人主頁的都是沒有入駐、沒有簽約,或是歌是被別人上傳的,被歸類到該主頁下的。

4、然後我們再點進去:
image.png
url的id就是上面這個id了,而後面的initial是什麼呢?initial是首字母的意思,你看下面我們選中的是A,然後它是65,是不是想到ASCII碼,在ASCII碼中A就是從65開始的,Z是90,後面以此類推,最後有個其他,是0,我們將它弄成一個列表:

#  男女、國家分類id
group_ids = (1001, 1002, 1003, 2001, 2002, 2003, 6001, 6002, 6003, 7001, 7002, 7003, 4001, 4002, 4003)
# 歌手姓名首字母id
initials = [i for i in range(65,91)] + [0]

二、歌手頁

1、點進來之後我們來到歌手頁,http://music.163.com/#/artist?id=6452,同樣,去掉#,
2、我們會發現下面有好幾個塊,
image.png
我們獲取的這個url對應的是熱門50首,如果你只需要熱門歌曲你可以獲取它所有連結:
image.png
這個程式碼被我分為兩塊,第一塊是熱門50首的url,也只有url。
而第二塊textarea裡是json,是這些歌曲的完整的資訊,我獲取的是json資訊,只不過,這些資訊通過lxml.etree或者BeautifulSoup用text的方式獲取下來會是字串,我們需要用json將它格式化,但是極個別在爬取的過程中,死活獲取不到。
3、上面那個是歌手的熱門歌曲,我們要獲取全站,就得從歌手的專輯下手,獲取專輯裡所有的歌手才行。因為scrapy本身的束縛,其實說是全站,並不是那麼方便,比如這四個板塊,我們只能選一個,一直往下,單曲或MV就得另寫。
4、我們在專輯頁會發現,有些是有很多頁的,後來搜的時候發現了API,所以接下來的東西,我們就不通過頁面的方式了,API我是通過這個網站發現的:http://moonlib.com/606.html,因為最開始我的目的是爬評論,來看到評論的API很多變了,我以為這些都變了,一開始還擱置了沒用,傻傻的去寫lxml,但是它的翻頁的序號是爬不到的,後來隨手測試了一下API,發現都有用。我們用到的是2到6(不包括5,沒用到歌單),第7條介面是MV的,不過不幸沒有發現像專輯一樣的列表頁資訊,它只有單曲的MV的API。不過這裡我們用不上。後面會專門分析API。
image.png

5、接下來就是每個專輯的所有歌曲還有專輯、歌手的一些資訊,專輯下也有評論
image.png

6、最後就是歌曲頁了
image.png

好,思路就是這樣,接下來我們分析Scrapy這個框架。

相關推薦

Scrapy音樂評論思路分析

目錄: 前提: scrapy這個框架很多人用過,網上教程也很多,但大多就是爬爬小說這種比較簡單且有規律的,網易雲音樂也有很多人寫過,也有API,不過大多是爬取了熱門歌曲,或是從歌單下手,但是考慮到歌單會有很多重複的。當然,從歌手頁的話,如果

python音樂歌曲評論信息

webkit fun 數據包 cond bubuko ret value selenium apple   網易雲音樂是廣大網友喜聞樂見的音樂平臺,區別於別的音樂平臺的最大特點,除了“它比我還懂我的音樂喜好”、“小清新的界面設計”就是它獨有的評論區了——————各種故事匯

Python音樂熱門評論

import requests import json def get_hot_comments(res): comments_json = json.loads(res.text) hot_comments = comments_json['hotComm

音樂(包括歌詞評論)

輸入 random 字節 sim main dal 需要 ssi wow # http://music.163.com/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&off

python音樂歌單音樂

string attrs default textarea bsp color read contents dom 在網易雲音樂中第一頁歌單的url:http://music.163.com/#/discover/playlist/ 依次第二頁:http://music.1

我用Python音樂上的Hip-hop歌單,分析rapper如何押韻

line gone 謠言 大致 -i 態度 大眾 其中 當前 緣起 《中國有嘻哈》這個節目在這個夏天吸引了無數的目光,也讓嘻哈走進了大眾的視野。作為我今年看的唯一一個綜藝節目,它對我的影響也蠻大。這個夏天,我基本都在杭州度過,在上下班的taxi上,我幾乎都在刷這個節目,最後

音樂評論並使用詞展示

referer top readlines target ner ads 詞雲 pos 參考 最近聽到一首很喜歡的歌,許薇的《我以為》,評論也很有趣,遂有想爬取該歌曲下的所有評論並用詞雲工具展示。 我們使用chrome開發者工具,發現歌曲的評論都隱藏在以 R_S

如何用Python絡爬蟲音樂歌曲

今天 http 分享圖片 分享 圖片 分分鐘 參考 down 技術 今天小編帶大家一起來利用Python爬取網易雲音樂,分分鐘將網站上的音樂down到本地。 跟著小編運行過代碼的筒子們將網易雲歌詞抓取下來已經不再話下了,在抓取歌詞的時候在函數中傳入了歌手ID和歌曲名兩個參數

如何用Python絡爬蟲音樂歌詞

網易雲歌詞 Python網絡爬蟲 網絡爬蟲 前幾天小編給大家分享了數據可視化分析,在文尾提及了網易雲音樂歌詞爬取,今天小編給大家分享網易雲音樂歌詞爬取方法。 本文的總體思路如下: 找到正確的URL,獲取源碼; 利用bs4解析源碼,獲取歌曲名和歌曲ID; 調用網易雲歌曲API,獲取歌詞; 將歌詞寫入

python3.基礎音樂【超詳細版】

簡單學習了python爬蟲之後,我們就可以嘿咻嘿咻了...因為平時就是用網易雲聽的歌,也喜歡看歌裡的評論,所以就爬網易雲音樂評論吧! 正式進入主題 首先還是去找目標網頁並開始分析網頁結構,如下 上面的三個箭頭都是所要找的資料,分別是評論使用者,評論和點贊數,都可以用正則表示式找出來,接下來繼續找怎樣

音樂所有歌單資訊

可以結合下一篇文章實現歌曲下載 python 爬蟲下載網易歌單歌曲 使用 python + requests + lxml + selenium 使用 requests 發起請求,獲取到所有分類的 url 使用 selenium 傳送請求取到

python音樂資料

1.首先匯入2個第三方庫,json庫是標準庫,用到的有Requests庫,Beautisoup庫,json庫 2.分析網站,當然是f12 開發者工具了,firefox瀏覽器的開發者工具個人用著比chrome的好用一點。 用開發者工具之前要先明白你要找什麼資料,我想抓取的是霹靂布袋戲的

音樂MP3連結指令碼

程式碼部分 #Python 3.5 #Author: A_lPha #Blog: http://blog.csdn.net/a_lpha import json from urllib.request import urlopen from ur

Python音樂歌單內所有歌曲

一、目標: 下載網易雲音樂熱門歌單 二、用到的模組: requests,multiprocessing,re。 三、步驟: (1)頁面分析:首先開啟網易雲音樂,選擇熱門歌單,可以看到以下歌單列表,然後開啟開發者工具 本人對於Python學習建立了一個小小的學習圈子,為

python音樂,python下載音樂

import requests import time import os from urllib import request from bs4 import BeautifulSoup import urllib class Wy: page = 0 wymusic = {}

音樂“三部曲”歌手資訊!

提到歌神張學友,大家可能不會陌生或者說是如雷貫耳,他可是有著逃犯殺手之稱,這不明天1月11號是他2019世界巡迴演唱會《香港站》的開辦日期,不知香港警方有沒有做好抓逃犯的準備【手動滑稽】。對於歌神明天的演唱會,小編其實挺嚮往的,只是奈何年底了,天天要工作,作為一個程式猿,這也是沒辦法的,為了排遣內心

音樂“三部曲”:輕鬆下載音樂歌曲!

本文是承接前兩文章而來,前兩篇文章我們收集了歌手資訊和歌詞,可是光有歌手資訊和歌詞沒有歌曲怎麼行,沒有歌曲怎麼知道音調,這讓人怎麼學?怎麼聽?這不耍流氓嘛?為了向大家證明小編不是耍流氓,是耍無賴,我決定教大家直接把網易雲音樂歌手的熱門歌曲全部免費下載下來。除了已經下架不在網易資料庫的,其他的都能全部

音樂“三部曲”:獲取音樂歌手歌詞!

上一篇文章爬取了歌手的姓名和歌手的 id ,這篇文章根據上篇爬取的歌手 id 來直接下載對應歌手的歌詞。這些我其實可以寫成一個大專案,把這個大專案拆成小專案一來方便大家的理解,二來小專案都會了的話,拼在一起就是一個完整的專案了。 上篇文章沒學會的也不要緊,私信小編可以獲取上次的爬取結果 c

用python音樂,新手看了也能操作

今天小編帶大家一起來利用Python爬取網易雲音樂,分分鐘將網站上的音樂down到本地。跟著小編執行過程式碼的筒子們將網易雲歌詞抓取下來已經不再話下了,在抓取歌詞的時候在函式中傳入了歌手ID和歌曲名兩個引數,其實爬取歌曲也是同樣的道理,也需要傳入這兩個引數,只不過網易雲歌曲的

使用python-aiohttp音樂

通過上文《使用python-aiohttp搭建微信公眾平臺》,我們已經可以響應來自微信伺服器的請求,接下來,我們為公眾號增加一個線上點歌的功能。 由於本人平時聽歌用的是網易雲音樂,所以就在網上搜了一下,還真找到不少,再考慮到這裡只需要用到網易雲音樂的關鍵詞搜尋