喜馬拉雅聽聽爬蟲

? ? ? 自己喜歡在上班的途中聽點有聲書,所以經(jīng)常在喜馬拉雅上找資源,要找到一個好聽的節(jié)目不容易,雖然在喜馬拉雅官網(wǎng)上可以按分類來看,但是卻不能按點贊數(shù)或者評論內(nèi)容排序找,不是很方便,于是就用Python寫了個爬蟲,把所有聲音的相關信息、評論內(nèi)容都抓取下來,然后放到數(shù)據(jù)庫來分析,這樣喜歡什么樣的資源,直接根據(jù)聲音或評論的內(nèi)容來匯總分析,結果就一目了然了。

流程實現(xiàn)圖


Urllib,request, selenium

? ? ? Web的訪問使用urllib和urllib2,相比request、selenium來說,效率更高些,感覺也穩(wěn)定些,之前使用request的遇到https的網(wǎng)址處理起來有點問題。而selenium呢,自動化操作可以不用分析具體頁面的處理邏輯,不過對于這種海量數(shù)據(jù),處理起來速度就會慢很多。

多線程和隊列

? ? ? 使用了2個threading.Thread的繼承類,Ximalaya類用來解析聲音專輯,分析提取專輯內(nèi)的聲音信息,解析出評論地址;CommentDown類專門用來提取保存評論內(nèi)容信息;一般一個聲音會有多條評論,多的上千條評論,所以CommentDown分配了10個線程來提取評論,Ximalaya分配了3個線程來分析專輯的聲音信息。

? ? ? 使用了2個隊列,1個用來保存專輯url,大小100,1個用來保存評論url,大小設置為200;這樣在超過隊列最大值的時候就會停下來,等待前面隊列里處理了再繼續(xù),可以有效控制整個爬蟲速度,以免訪問太過頻繁被網(wǎng)站給屏蔽了。

數(shù)據(jù)保存

? ? ? 使用了Mongodb數(shù)據(jù)庫,Nosql處理高并發(fā)的,相比SQL速度和效率要高得多。Mongodb里在music下保存聲音的相關信息(比如聲音的專輯名、專輯地址、聲音的地址、聲音的時長、點贊數(shù)等等),bookcomment下保存聲音的評論內(nèi)容。

斷點續(xù)傳、重復處理

? ? ? 遇到中途中斷后要繼續(xù)執(zhí)行,還得考慮下斷點續(xù)傳,這里處理得比較簡單粗暴,在Ximalaya處理聲音的時候,會先判斷數(shù)據(jù)庫是否有聲音的地址,如果存在就是跳過不再處理,在CommentDown處理評論的時候,判斷判斷數(shù)據(jù)庫是否有聲音的地址,如果存在就是跳過不再處理,這樣對于后面比較費時處理部分都可以直接跳過,也不會存在有重復的數(shù)據(jù)會影響最后的分析的問題。

異常處理

? ? ? 程序在解析頁面的時候,可能會有超時之類的異常情況,增加了對應的異常處理,socket.setdefaulttimeout(20)設置全局超時為20秒,超過20秒就會超時報錯,這樣再通過異常捕獲來處理,設置了異常處理記數(shù)器,對于異常頁面重復處理指定次數(shù)后不再處理,避免部分聲音頁面被刪除一直訪問異常的情況。

數(shù)據(jù)分析

? ? ? 最后對保存到數(shù)據(jù)庫的數(shù)據(jù)進行分析,做分析的時候Nosql做關聯(lián)分析太痛苦了,完全不如sql查詢方便,于是把數(shù)據(jù)導入到Oracle來進行的分析,根據(jù)評論內(nèi)容中的關鍵字來標識判斷(例如:“點贊”,“好聽”,“太棒“之類的都判斷成受歡迎),最后再用匯總統(tǒng)計出結果。

評論最受歡迎的TOP20有聲書:

評論最受歡迎的TOP10綜藝節(jié)目:

評論最受歡迎的TOP20音樂:

評論普通話說得最好的節(jié)目:

最后源代碼也附上了,有興趣的朋友可以自己看看:

爬蟲源代碼

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 自己喜歡在上班的途中聽點有聲書,所以經(jīng)常在喜馬拉雅上找資源,要找到一個好聽的節(jié)目不容易,雖然在喜馬拉雅官網(wǎng)上可以按...
    陽光樹林閱讀 1,635評論 2 50
  • 國內(nèi)最火爆的音頻app要屬喜馬拉雅,喜馬拉雅FM APP于2013年上線,定位為音頻分享與點播社區(qū)。與傳統(tǒng)的廣播行...
    迷途小球迷閱讀 2,531評論 0 1
  • 我只參加了一次高考,談不上什么經(jīng)驗,但還是愿意說說我的感受。 進入考場,找到自己的位置,坐下來,整理一下帶的必要文...
    路福閱讀 365評論 0 4
  • 做微商以來,經(jīng)歷過的事很多很多,不敢主動找你聊天,因為怕你說跟你聊天就是想買我的產(chǎn)品,因為這樣我們的關系越來越淡,...
    z鐘姐閱讀 221評論 0 0
  • 重契履約誠可貴,欺鰥騙寡義難彰。 陳師訴狀何求報,守正持公古道腸。 ——新韻十唐 注: 陳師:清末著名訟師陳夢吉,...
    姬伯昆閱讀 1,116評論 2 18

友情鏈接更多精彩內(nèi)容