爬蟲實踐之獲取網易雲評論資料資訊

mmz_77發表於2022-03-29

前幾天在爬蟲群裡面看到一個同學有償爬取些資料,我就以試試看的態度接了單,他的需求內容包括採集網易雲音樂熱評評論內容,資料量1W就足夠,然後就是做點資料分析相關的工作即可。這份需求裡邊有網路爬蟲,有資料分析和資料處理,還有視覺化,算是一個全面的實踐。

首先是資料來源,來自網易雲音樂熱評,我們獲取到資料網址,通過呼叫了API抓取難度就少了許多,但是像網易雲這樣的大網址,反爬機制做的是很完善的,雖然需求獲取的資料量並不多,但是我也在程式裡面做了基本的反爬策略,加了代理IP,剛好之前購買的億牛雲代理還沒有到期,就繼續使用。整個爬蟲過程比較簡單,程式碼如下:

#! -*- encoding:utf-8 -*-
        import base64            
        import sys
        import random
        PY3 = sys.version_info[0] >= 3
        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str
            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes
        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理伺服器(產品官網 )
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"
                # 代理驗證資訊
                proxyUser = "username"
                proxyPass = "password"
                request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
                # 新增驗證頭
                encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
                request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass                    
                # 設定IP切換頭(根據需求)
                tunnel = random.randint(1,10000)
                request.headers['Proxy-Tunnel'] = str(tunnel)

獲取到資料後的分析過程主要涉及到時間處理,主要是評論時間分佈,使用者評論數量,地區分佈,評論詞雲等,重點就是是針對時間列做了資料處理,常規操作,這裡就不分享具體的實現過程, 並發現了一些有趣的資料分析結果。最後也歡迎大家積極嘗試,有好的內容也可以分享給我噢


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2884793/,如需轉載,請註明出處,否則將追究法律責任。

相關文章