編譯環境:python v3.5.0, mac osx 10.11.4
<big>python爬蟲基礎知識: Python爬蟲學習-基礎爬取</big>
<big>python爬蟲進階知識: Python爬蟲學習-爬取大規模數據</big>
若未進行數據爬取可以使用此數據進行練習Github
可視化第三方庫與網頁編譯器
-
Jupyter Notebook
安裝:終端輸入
pip3 install jupyter
啟動:終端輸入
jupyter notebook
-
highchart
安裝:終端輸入
pip3 install charts
檢測:- 終端輸入
jupyter notebook
在jupyter頁面點擊new>python3
import charts
然后點擊cell>run
- 終端輸入
-
更換文件
查找charts所在目錄,在jupyter中打開一個新的python文件輸入:
import sys
print(sys.path)
在輸出的路徑中查找site-packages的路徑:
數據分析流程
-
備份數據,防止處理時對數據造成的意外損壞
mongodump -h dbhost -d dbname -o dbdirectionary
# -h mongodb所在服務器地址,如本機127.0.0.1
# -d 需要備份的數據庫實例如:gangjiData
# -o 備份數據存放地址如:/Users/fujingxin/Desktop/backData
- 對數據進行預處理(以上節爬取的數據為例)
-
去除area中多余的部分(‘-’),并將None改為地區不明
-
統一發布日期的格式
-
轉換價格格式,方便計算
-
利用聚合管道pipeline對數據進行高效的查找與篩選
當我們要針對爬取的數據進行統計分析時,不同的問題需要的數據形式不同,pipeline相當一個可以提供給我們一層一層篩選所需數據的管道。
- 利用highchair繪制圖表
-
繪制柱狀圖
-
繪制折線圖
-
繪制餅圖
實戰練習1
問題:某段時間內,北京各個城區發帖數量的 top3 類目
已知:
某個時間段,例:2015.12.25~2015.12.27
北京各個城區,例:朝陽
求解:
發帖數量 top3
分析流程
所需數據結構:
原始:
series = [{'name': 'name','data': [100]},{'name': 'name','data': [100]}, ...]
實際上:
{name:類目,data:發帖量}
目標:
{'_id': ['北京二手家電'], 'counts': 175}
構建聚合管道:
實戰練習2
問題:某段時間內各大類目中成色對應的平均價
已知:
某個時間段,例:2015.12.25~2015.12.27
各大類目,例:北京二手手機,北京二手筆記本
單個物品價格,例:某品牌二手電視,價格1000元
求解:
平均價格
分析流程
所需數據結構:
原始:
series = ['data1','data2','data3']
實際上:
[全新對應的價格,9成新對應的價格,8成新對應的價格,7成新對應的價格]
目標:
{'avg_price': 300.0, '_id': '7成新及以下'}
構建聚合管道:
構建繪圖所需要的數據結構:
繪制圖表:
如何將數據庫導出為csv
mongoexport -d database -c collection -o output/path.csv
All source code can be downloaded at GitHub:
https://github.com/jacobkam/WebCrawlerLearning.git