Python爬取拉勾網所有的職位信息(一)
程序員找工作,去哪裡?拉勾網首選。職位那麼多,一個一個看多麻煩,那麼你會python的話,此時就是你運用體內python力量的時候了。
這篇文章主要講述使用python去爬取拉勾網所有的職位招聘信息,針對大多數不熟悉python的觀眾,這裡使用最簡單的方法去實現。
先貼上代碼地址:https://github.com/YPSheng/python/blob/master/lagouSpider.py
裡面有很多關於python爬蟲的知識,大家也可以去觀看。
話不多說,直接上硬菜!
今天爬取的網站地址:https://www.lagou.com/
一、關於反爬蟲知識解析
從功能上來講,爬蟲一般分為數據採集,處理,儲存三個部分。這裡我們只討論數據採集部分。
一般網站從三個方面反爬蟲:用戶請求的Headers,用戶行為,網站目錄和數據載入方式。前兩種比較容易遇到,大多數網站都從這些角度來反爬蟲。第三種一些應用ajax的網站會採用,這樣增大了爬取的難度。
詳細請查看:https://zhuanlan.zhihu.com/p/20520370
二、所用工具:
python3,
工具:PyCharm
三、開始
打開網頁:
好了,第一步開始,我們需要爬取所有的職位信息,那麼首先需要獲取到所有的職位名稱,我們先查看一下網頁源碼,打開瀏覽器的檢查,查找我們需要的信息在什麼位置:
好了,找到了,下面開始擼代碼,獲取所有的職位信息,這裡使用了python的BeautifulSoup的包,很好用,可以用看來提取網頁內容:
這個很簡單,也沒有什麼反爬蟲措施,內容也可以直接獲取到,需要對獲取到的數據進行處理下面重點,我們去查看一下隨便一個職位的信息:
哇,信息很多,這要是一個一個翻著看,翻到明年了,此時就是我們這個爬蟲的意義存在了,我們先去查看下網頁源碼:
可能對拉勾網不太熟悉的觀眾會說:好了,找到了,我們可以向取s職位信息一樣去g擼著這個,那麼你就大錯特錯了,拉鉤這裡還是做了反爬蟲的,所有的數據都是通過動態載入的,你直接去擼,會發現什麼都獲取不到。下面我們去解決這個問題,大家看好別丟了:
一、先打開我們瀏覽器的調試界面(就是chrome叫「檢查」,這個瀏覽器很好用),點擊network
二、然後隨便在上面的上選城市篩選條件裡面點以一個城市,此時會看到下面,一大堆東西飄過,看不懂啊,沒關係,裡面大部門對我們是沒用的,此時我們對它進行個篩選,只查看我們需要用到的:
三、好了,找到我們需要的了,我箭頭指向的文件,這是一個json文件,裡面返回的是所有我們需要的信息,我們開始擼它,點擊這個文件查看一下:
四、看到沒,這些是什麼,全都是數據,我們需要的數據,不過,你要是直接選擇打開這個頁面,你是什麼都看不到的,看到的是這個
五、拉鉤對這些重要數據,做了一些保護措施,我們先查看一下這個頁面的請求信息:
六、上面指示的這些,很重要,都是訪問這個請求需要用到的,不然你是得不到數據的,代碼如下:
七、仔細觀察剛剛得到的數據信息,你會發展只有一頁的數據,而真實的數據有許多頁,此時就要我們分析頁碼這個問題:
八、好了,得到了頁面數據條數,總數據條數,那麼總共多少頁就知道怎麼算了吧,我們來擼怎麼讓請求每個頁面,實現自動翻頁,還記得請求頭裡的Form data裡面有個kn,它的值就是當前頁碼:
好了,需要的信息都找到了,開始擼代碼:
九、處理獲取到的數據
十、大概的流程就是這樣了,需要自己再對程序代碼進行一些整合,大家動手練習一下都是有好處的。爬取結果如下:
最後,大家想獲取那些數據可以對代碼進行簡單修改,我這裡沒對代碼進行封裝,主要是為了讓大家都能看能邏輯,對python爬蟲新手也能看懂,完整代碼我已經上傳至我的github,大家可以去下載參考一下,以後可能會利用框架寫一個分散式的出來,這樣能加快爬取效率
GitHub:https://github.com/YPSheng/python/blob/master/lagouSpider.py
謝謝大家。歡迎大家一起學習交流。如有不正確的,歡迎大家進行提出改正。
推薦閱讀:
※八、示例
※python爬蟲常用庫之requests詳解
※輪帶逛終極版! 抓取輪子哥(vczh)全部知乎動態
※基於cookie登錄爬取豆瓣舌尖短評信息並做詞雲分析
TAG:python爬蟲 |