一個簡單拉鉤網python爬蟲

前期準備

Don't be evil!python

主要就是分析須要抓取的頁面,或許會有意外驚喜,直接找到獲取數據的接口。git

首選打開拉鉤網首頁,發現一個職位至少有一個一級分類、二級分類和一個標籤。好比須要點擊查找Java相關的職位,須要找到技術、後端開發,而後點擊Java,才能獲取Java相關的職位列表。github

clipboard.png

職位列表就能夠獲得不少的關於職位的信息了,如職位名稱、公司名稱、公司logo、所屬行政區、商區等信息,可是須要提取這些信息的時候,xpath會讓人寫的很頭疼。mongodb

clipboard.png

若是想這樣解析頁面獲取數據有如下幾個問題:json

  1. 職位列表最多隻有30頁後端

  2. 職位關鍵信息獲取不全cookie

好比一個職位的地點應該屬於XX市XX區XX商區XX樓,這種信息只靠解析頁面是獲取不全的。不過當點擊城市的時候,查看發送的網絡請求,能夠發現一個可喜的接口,這個接口將會返回一個職位列表的json數據。網絡

clipboard.png

可是由於爲了防止爬蟲調用這個接口,使用接口的時候必需要帶上cookie。訪問首頁的時候,會獲取部分cookie值,可是惟獨沒有SEARCH_ID這個值。ide

clipboard.png

可是這個cookie不是平白無辜的產生的,想一想調用這個接口的頁面入口,觀察response的header,會發現有Set-Cookie:SEARCH_ID=7587e152a3b14eec8bb0f29e774e4094; Version=1; Max-Age=86400; Expires=Sun, 26-Feb-2017 17:16:05 GMT; Path=/工具

clipboard.png

這樣前期的準備工做就完成了,能夠開始編碼了。

開始編碼

經過前期分析,能夠發現須要作這麼幾項工做:

  1. 訪問首頁和職位過濾頁面獲取cookie

  2. 帶上cookie調用接口

具體的流程:

  1. 訪問首頁,獲取全部職位的標籤

  2. 按城市調用接口,同時獲取全部cookie

  3. 保存數據

因此須要一些工具。

動態加載頁面和獲取cookie:

帶上cookie調用接口:

源碼

結果

抓取的總量(已經將數據保存在mongodb中了):

clipboard.png

clipboard.png

相關文章
相關標籤/搜索