若有收穫,就點個贊吧
前幾天在爬蟲群裡面看到一個同學有償爬取些資料,我就以試試看的態度接了單,他的需求內容包括採集網易雲音樂熱評評論內容,資料量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)
獲取到資料後的分析過程主要涉及到時間處理,主要是評論時間分佈,使用者評論數量,地區分佈,評論詞雲等,重點就是是針對時間列做了資料處理,常規操作,這裡就不分享具體的實現過程, 並發現了一些有趣的資料分析結果。最後也歡迎大家積極嘗試,有好的內容也可以分享給我噢