一直對python感興趣,最近想玩玩爬蟲,抓拉鈎網際網路職位招聘資訊,然後做點統計什麼的,廢話不多說,開打開打。
運作環境:
1、win7 32bit
2、pycharm 4.0.4
3、python 3.4
4、google chrome
需要的插件
要抓一個網站的資料,當然要分析這個網站的網頁代碼是怎麼寫的,也就是你要的資訊資料放在什麼位置。
打開拉鈎首頁,按f12進入網頁調試模式,可以發現拉鈎把所有的職位都放在了id=sidebar标簽下,每個職位都放在<a></a>标簽下,是以很容易的就取到了所有職位
其實,可以看拉鈎頁面的源碼,顯示比較單一,然後看它的前端頁面源碼,可以看到,就是用了一個模闆,然後發請求,根據傳回的資料填入其中就可以了,你可以随意點一個職位連結,在看它的network,看加載頁面的那個請求,發現了什麼?
它就是用了一個positionajax.json?city=*****的post請求,然後根據傳回資料顯示的
這說明什麼?說明你要他的職位資料,你隻要發請求,然後對上面傳回的json資料提取就可以了!!不需要處理它的頁面!
分析它不同職位的請求,你就會發現,它所需要的參數就是一個目前城市city,目前頁号pn,和職位種類kd
是以,隻要擷取到它所有的城市,所有的職位,然後依次發請求,就可以輕松的擷取它所有的招聘資訊了.....上面已經擷取了所有職位,現在擷取所有城市
提取代碼
現在有了所有職位分類和所有城市,接下來的任務就是發請求,擷取資料了。一開始是用單線程的.....速度可想而知,是以,用各多線程速度會明顯提升很多。
python的多線程使用比較簡單,需要引入threading.thread 和 queue(隊列)
開啟多線程
處理函數working()
抓取函數,也就是發請求函數grab()
當然,還得給他們配置設定任務,接下來就是把所有任務都放在隊列中了,根據目前城市和目前職位來建立請求任務
主要的工作都差不多完成了,現在就運作它抓資料去吧
上面給的都是代碼片段,可能有些輔助方法沒貼出來,這裡就把所有的代碼都放上來吧。
lagoucrawler類:
mysql connection類:
未完待續....後面統計的之後在寫,現在還沒做....