天天看點

[jjzhu學python]之使用python抓取拉勾網職位資訊并做簡單統計分析

一直對python感興趣,最近想玩玩爬蟲,抓拉鈎網際網路職位招聘資訊,然後做點統計什麼的,廢話不多說,開打開打。

運作環境:

1、win7 32bit

2、pycharm 4.0.4

3、python 3.4

4、google chrome

需要的插件

要抓一個網站的資料,當然要分析這個網站的網頁代碼是怎麼寫的,也就是你要的資訊資料放在什麼位置。

打開拉鈎首頁,按f12進入網頁調試模式,可以發現拉鈎把所有的職位都放在了id=sidebar标簽下,每個職位都放在<a></a>标簽下,是以很容易的就取到了所有職位

其實,可以看拉鈎頁面的源碼,顯示比較單一,然後看它的前端頁面源碼,可以看到,就是用了一個模闆,然後發請求,根據傳回的資料填入其中就可以了,你可以随意點一個職位連結,在看它的network,看加載頁面的那個請求,發現了什麼?

[jjzhu學python]之使用python抓取拉勾網職位資訊并做簡單統計分析

它就是用了一個positionajax.json?city=*****的post請求,然後根據傳回資料顯示的

[jjzhu學python]之使用python抓取拉勾網職位資訊并做簡單統計分析

這說明什麼?說明你要他的職位資料,你隻要發請求,然後對上面傳回的json資料提取就可以了!!不需要處理它的頁面!

分析它不同職位的請求,你就會發現,它所需要的參數就是一個目前城市city,目前頁号pn,和職位種類kd

[jjzhu學python]之使用python抓取拉勾網職位資訊并做簡單統計分析

是以,隻要擷取到它所有的城市,所有的職位,然後依次發請求,就可以輕松的擷取它所有的招聘資訊了.....上面已經擷取了所有職位,現在擷取所有城市

[jjzhu學python]之使用python抓取拉勾網職位資訊并做簡單統計分析

提取代碼

現在有了所有職位分類和所有城市,接下來的任務就是發請求,擷取資料了。一開始是用單線程的.....速度可想而知,是以,用各多線程速度會明顯提升很多。

python的多線程使用比較簡單,需要引入threading.thread 和 queue(隊列)

開啟多線程

處理函數working()

抓取函數,也就是發請求函數grab()

當然,還得給他們配置設定任務,接下來就是把所有任務都放在隊列中了,根據目前城市和目前職位來建立請求任務

主要的工作都差不多完成了,現在就運作它抓資料去吧

上面給的都是代碼片段,可能有些輔助方法沒貼出來,這裡就把所有的代碼都放上來吧。

lagoucrawler類:

mysql  connection類:

未完待續....後面統計的之後在寫,現在還沒做....