Don't be evil!python
主要就是分析須要抓取的頁面,或許會有意外驚喜,直接找到獲取數據的接口。git
首選打開拉鉤網首頁,發現一個職位至少有一個一級分類、二級分類和一個標籤。好比須要點擊查找Java相關的職位,須要找到技術、後端開發,而後點擊Java,才能獲取Java相關的職位列表。github
職位列表就能夠獲得不少的關於職位的信息了,如職位名稱、公司名稱、公司logo、所屬行政區、商區等信息,可是須要提取這些信息的時候,xpath會讓人寫的很頭疼。mongodb
若是想這樣解析頁面獲取數據有如下幾個問題:json
職位列表最多隻有30頁後端
職位關鍵信息獲取不全cookie
好比一個職位的地點應該屬於XX市XX區XX商區XX樓,這種信息只靠解析頁面是獲取不全的。不過當點擊城市的時候,查看發送的網絡請求,能夠發現一個可喜的接口,這個接口將會返回一個職位列表的json數據。網絡
可是由於爲了防止爬蟲調用這個接口,使用接口的時候必需要帶上cookie。訪問首頁的時候,會獲取部分cookie值,可是惟獨沒有SEARCH_ID
這個值。ide
可是這個cookie不是平白無辜的產生的,想一想調用這個接口的頁面入口,觀察response的header,會發現有Set-Cookie:SEARCH_ID=7587e152a3b14eec8bb0f29e774e4094; Version=1; Max-Age=86400; Expires=Sun, 26-Feb-2017 17:16:05 GMT; Path=/
。工具
這樣前期的準備工做就完成了,能夠開始編碼了。
經過前期分析,能夠發現須要作這麼幾項工做:
訪問首頁和職位過濾頁面獲取cookie
帶上cookie調用接口
具體的流程:
訪問首頁,獲取全部職位的標籤
按城市調用接口,同時獲取全部cookie
保存數據
因此須要一些工具。
動態加載頁面和獲取cookie:
帶上cookie調用接口:
抓取的總量(已經將數據保存在mongodb中了):