拉勾網職位信息爬蟲練習

最近橘子媽在學習數據分析,在看了網課,讀了博客等等一系列準備之後,先寫了個小爬蟲弄點數據練練手撒。

首先是打開jupyter notebook ,new一個Python3,然後導入需要用的庫。最主要是當然是爬蟲主力:requests跟BeautifulSoup啦,然後是json庫跟time庫,一個是用來轉換json跟Python格式的,另一個是偽造瀏覽器的時候用來控制時間間隔的。

因為橘子媽在杭州,想從事數據分析方面的工作,所以就先在拉勾網上搜索了相關條件,得到結果之後打開開發人員工具→network→刷新。

在對【Doc】裡面的內容篩選之後發現,拉勾網比較會玩,主頁面上的信息都是通過非同步載入的,也就是通過一些json載入到網頁上面的。所以我們現在需要找到這個json

確定是這裡啦,接下來呢需要看一下headers裡面的信息

首先是獲得URL,直接複製就好啦。需要注意一下這裡的request方式是post

然後我們根據上圖中紅框中的內容來偽造頭部信息,同時把網頁信息先抓取出來看看

列印jd可以看到,我們已經把數據爬下來啦,不過現在它們還是json格式的,接下來呢我們要把這些數據整理一下,找到我們需要的部分

先手動馬賽克一下略略略

可以看到每一條【result】裡面都存了城市、公司名稱、公司人數、所在區、學歷要求、工資、經驗要求等等信息。除了這些,我還想要知道每個公司對職位的具體要求,打開一個職位的鏈接看一下

很快,我們找到了【職位描述】所在的html鏈接,然後再分析一下headers

跟之前爬取主頁的差不多,只不過這個是以get方式請求的,就不再贅述了,直接上結果。

我直接寫成一個函數啦,傳入的值是公司ID,運行結果也很完美O(∩_∩)O~

為了看起來清爽一點,把一個職位的所有信息都寫進了一個函數

冬天到了,春天還會遠么?

會爬一條,爬一百條還不會么?

so,我們接下來的目標就是爬下來所有的職位信息?(????)

注意到,每載入一頁,就會出現一個上圖標紅的框框,而打開他們「大家來找茬」之後發現,他們只有pn這一個不同點,pn的值為幾,就代表第幾頁,而且每一頁都存了15條數據

好了,現在我們知道了拉勾網主頁的數據存在json里,不同的pn代表不同的頁數,每一頁存了15條數據,由每條數據我們可以得到一個職位的公司名稱、公司ID、工資、學歷等等信息(getjobdetails函數),還可以通過每個公司ID得到具體的職位描述(getjobneeds函數)

於是我定義了這樣一個函數,只要傳入一個URL,就可以得到拉勾網30頁的職位信息。其實這裡並不完美,因為我不會寫多重循環(╥╯^╰╥),就勉勉強強啦,求大神指點 (?????)

最後把爬下來的信息轉換成了DataFrame格式(為了下一步的分析),然後保存到電腦里就真正的大功告成啦。

這個爬蟲是我看了丘祐瑋老師新浪新聞爬蟲的視頻之後模仿練手寫的,(Python網路爬蟲實戰 - 天善智能-商業智能和大數據在線社區,用心創造價值)漏洞啊不足啊什麼的還望各位大神輕輕批評,多多指教。


推薦閱讀:

利用Pandas進行醫院銷售數據分析
營銷已死,增長為王(下)|一森管理案例之數據時代
恭喜你!成功由遊樂場模式升級為荒野求生模式
IMDB——python數據分析報告
基於新浪微博的男女性擇偶觀數據分析

TAG:爬蟲 | Python | 數據分析 |