歡迎光臨
每天分享高質量文章

利用Python分析2018智聯招聘全國各個城市的職位數排名

新年快到了,工作了一年你,躺在床上,退下一身的疲怠,是否也曾嚮往去到一個新的城市工作和生活呢?

那中國除了公認的北上廣深工作機會最多以外,還有哪些城市也相對不錯呢?

這時候我們可能會打開招聘網站開始選擇城市然後來瞭解這個城市的職位情況.

那麼一直秉持著人生苦短,我學python的我們,為什麼不能用python來寫一個分析2018全國各個城市的職位數排名的爬蟲腳本呢?

這麼一想十分可行啊,我們只需要找到一個標的招聘平臺,然後通過用代碼get到它的html正文,通過BeautifulSoup分析html來得到我們想要的資料,然後用matplotlib畫出圖表就可以了. (完整代碼見本文末尾.)

於是立馬動手,首先,既然我們是要分析全國範圍內的所有城市的職位數,那麼我們肯定首先要把所有的城市先列出來.然而這裡想必地理學的再好的同學也不可能能把全國範圍內所有的城市都能背下來吧,所以這一步,我們也是用python來爬取到全國範圍內所有的城市名稱.

1.爬取全國範圍內所有的城市串列

通過一番查找,終於找到了智聯上的這個頁面:http://www.zhaopin.com/citymap.html

乍一看好像所有的城市名都是加粗的,右鍵查看一下原始碼,果然,所有的城市名都被加上了標簽,類似於這樣

那就簡單了,我們直接獲取該網頁所有標簽裡面的內容,就是標簽名了.代碼:

這樣我們就獲取到了所有的城市名,下一步我們就是要通過遍歷這些城市名來查詢某一個職業的職位數了.

2.遍歷城市名,爬取對應城市的職位數.

這時候我們先打開智聯的搜工作頁面,輸入職位名”android”,地址選擇”煙臺”,然後點擊搜工作,這時候註意到,瀏覽器的地址欄變成了:

原來,智聯的找工作這個按鈕是執行了一個get請求而已,其中jl=和&kw;=即分別代表要查找的城市和職位關鍵字,這時候先不要著急寫代碼,我們先來像上面說的一樣來分析一下這個頁面.

首先第一眼直接就找到了這樣的字眼:

上面赫然顯示著共84個職位滿足條件,一切總是那麼完美,不需要多餘的任何操作,仿佛傳到橋頭自然直一樣,這不正是我們想要找的職位數嗎.然後右鍵選擇查看原始碼.恩,不得不說相當完美!

但這次資料格式好像比較複雜一點,我們如果僅僅簡單用84標簽包裹的內容來獲取職位數的話好像已經行不通了,因為該網頁很多的地方也使用了標簽,那怎麼辦呢,這時候我們只能使用正則運算式來匹配了.

修修改改,最終的正則運算式是這樣的:(?!共)[0-9]+(?=個職位滿足條件),其中的?!和?=則是讓其所在的括號內的內容不放入匹配緩衝區里.

好,接下來我們就可以結合以上的內容來寫代碼了.

寫完趕緊興衝衝的run一下,…然而…

結果是運行沒有報錯也沒有任何輸出,左邊的紅色方塊顯示程式還在運行中,是的,它卡住了,停止運行再重新start還是會卡主,檢查一下程式也沒問題啊,what?辛辛苦苦才到達了這步救過竟然卡住了?這個時候我們不要著急,身為一個整天跟各種BUG打交道的程式員,一定要鎮定,努力分析問題可能的原因,然後解決問題.

繼續回到我們的這個問題上,排除我們程式本身的問題,會不會是對方的網站早知道我們會寫python爬取,故意給我們加了限制呢?於是我們給我們的這次訪問加上一個請求頭試試,讓我們的這次請求偽裝成來自瀏覽器的訪問.

ok,改代碼,給這次get請求加上一個請求頭:

運行:

果然這下就沒問題了,程式瞬間就成功獲取到了職位數為 84。

繼續改動一下程式,遍歷所有的城市串列,並根據key=城市名,value=職位數的格式將所有的城市職位數都獲取來存到一個字典(Dictionary)里.

這樣我們就得到了這樣的資料:
{‘北京’: 4205, ‘上海’: 2702, ‘廣州’: 1442, ‘深圳’: 1872, ‘天津’: 536 …}

3.使用matplotlib根據資料畫出圖表

通過上面我們獲取完了資料之後,直接用matplotlib庫畫出圖表來就可以直觀的看到各個城市的職位數情況了.

4.結果展示

程式運行:

運行結果:

還可以修改一下腳本中的職位名,查找其他職業:

代碼地址:https://github.com/miqt/PythonLearn/blob/b3d33166303c3ec19eae3eedf13810af0234c9d9/ZhiLian.py

作者:痕跡

來源:http://imaster.top/




————近期開班————

《馬哥教育Python自動化開發全能實戰班》是馬哥教育聯合阿裡、豆瓣、大眾點評等一線Python工程師,根據目前企業需求的Python開發人才進行了深度定製,加入大量一線互聯網公司:大眾點評、餓了麽、騰訊等生產環境真是專案,課程由淺入深,從Python基礎到Python高級,讓你融匯貫通Python基礎理論到日誌分析、todolist任務管理系統、類Flask框架多人博客、CMDB資產管理、任務調度系統、運維流程系統六大專案實戰,手把手教學讓你從0開始蛻變成Hold住年薪30萬的Python自動化開發人才。

10期面授班:2018年03月05號(北京)

11期網絡班:2018年03月17號網絡

掃描二維碼領取學習資料

更多Python好文請點擊【閱讀原文】哦

↓↓↓

赞(0)

分享創造快樂

© 2020 知識星球   网站地图