python爬蟲:爬取拉勾網職位並分析
0. 前言
本文從拉勾網爬取深圳市數據分析的職位信息,並以CSV格式保存至電腦,之後進行數據清洗,生成詞雲,進行描述統計和回歸分析,最終得出結論。
1. 用到的軟體包
Python版本: Python3.6
requests:下載網頁
math:向上取整
time:暫停進程
pandas:數據分析並保存為csv文件
matplotlib:畫圖
statsmodels:統計建模
wordcloud、scipy、jieba:生成中文詞雲
pylab:設置畫圖能顯示中文
2. 解析網頁
打開Chrome,在拉勾網搜索深圳市的「數據分析」職位,使用檢查功能查看網頁源代碼,發現拉勾網有反爬蟲機制,職位信息並不在源代碼里,而是保存在JSON的文件里,因此我們直接下載JSON,並使用字典方法直接讀取數據。
抓取網頁時,需要加上頭部信息,才能獲取所需的數據。
在搜索結果的第一頁,我們可以從JSON里讀取總職位數,按照每頁15個職位,獲得要爬取的頁數。再使用循環按頁爬取,將職位信息匯總,輸出為CSV格式。
程序運行如圖:
抓取結果如圖:
3. 數據清洗
數據清洗占數據分析工作量的大頭。在拉勾網搜索深圳市的「數據分析」職位,結果得到369個職位。查看職位名稱時,發現有4個實習崗位。由於我們研究的是全職崗位,所以先將實習崗位剔除。由於工作經驗和工資都是字元串形式的區間,我們先用正則表達式提取數值,輸出列表形式。工作經驗取均值,工資取區間的四分位數值,比較接近現實。
4. 詞雲
我們將職位福利這一列的數據匯總,生成一個字元串,按照詞頻生成詞雲實現python可視化。以下是原圖和詞雲的對比圖,可見五險一金在職位福利里出現的頻率最高,平台、福利、發展空間、彈性工作次之。
5. 描述統計
可知,數據分析師的均值在14.6K,中位數在12.5K,算是較有前途的職業。數據分析散布在各個行業,但在高級層面上涉及到數據挖掘和機器學習,在IT業有長足的發展。
我們再來看工資的分布,這對於求職來講是重要的參考:
工資在10-15K的職位最多,在15-20K的職位其次。個人愚見,10-15K的職位以建模為主,20K以上的職位以數據挖掘、大數據架構為主。
我們再來看職位在各區的分布:
數據分析職位有62.9%在南山區,有25.8%在福田區,剩下少數分布在龍崗區、羅湖區、寶安區、龍華新區。我們以小窺大,可知南山區和福田區是深圳市科技業的中心。
6. 實證統計
我們希望獲得工資與工作經驗、學歷的關係,由於學歷分三類,需設置3個虛擬變數:大專、本科、碩士。多元回歸結果如下:
在0.05的顯著性水平下,F值為82.53,說明回歸關係是顯著的。t檢驗和對應的P值都小於0.05表明,工作經驗和3種學歷在統計上都是顯著的。另外,R-squared的值為0.41,說明工作經驗和學歷僅僅解釋了工資變異性的41%。這點不難理解,即使職位都叫數據分析師,實際的工作內容差異比較大,有的只是用Excel做基本分析,有的用Python、R做數據挖掘。另外,各個公司的規模和它願意開出的工資也不盡相同。而工作內容的差異和公司的大方程度是很難單憑招聘網頁上的宣傳而獲得實際數據,導致了模型的擬合優度不是很好這一現實。
由於回歸模型總體是顯著的,我們可以將自變數的值代入回歸方程,獲得各個學歷的工資的期望值E。對於數據分析職位,以1年工作經驗為例,大專學歷的期望工資是7.8K,本科學歷的期望工資是10.8K,碩士學歷的期望工資是17.6K。這證實了「知識改變命運」這一說法。
7. 完整代碼
由於每次運行爬蟲耗時約30分鐘,而運行數據分析耗時幾秒鐘,我們將兩部分的工作單獨運行,以節省數據分析的時間。
7.1 爬虫部分的代碼
7.2 數據分析部分的代碼
本文轉載自【程序人生】
※圖文搞笑段子這麼黑程序員真的好嗎?
※中國程序員VS美國程序員,差距在哪裡?
TAG:程序員之家 |