本文轉(zhuǎn)至我在知乎上寫的文章
---------------------------------------------------------------
在這樣一個人工智能呼聲越來越高吭历,大數(shù)據(jù)遍地的時代捺典,作為一個科技工作者顾患,感覺不會點Python實在是說不過去啊供汛。最近在看阿里招聘砸狞,正好借這個機會爬取并分析一下阿里的招聘信息,看看能不能有啥收獲绝淡。
這里以阿里的數(shù)據(jù)崗昌抠,工作地點:杭州,職位類別:技術(shù)類轨功,為搜索關(guān)鍵詞旭斥。本想繼續(xù)在Python中寫一個loop來執(zhí)行翻頁命令的,發(fā)現(xiàn)直接翻頁的話古涧,地點信息和職位類別都會擴大垂券,不僅局限于杭州和技術(shù)類。好在自己分析羡滑,不那么著急時間菇爪,那就用selenium驅(qū)動瀏覽器直接爬取吧。
要把數(shù)據(jù)爬下來總共分幾步呢柒昏,先自己記好凳宙,后面直接按照這個frame豐富函數(shù)即可:
打開瀏覽器(完成轉(zhuǎn)至網(wǎng)頁,輸入關(guān)鍵詞等操作)——讀取網(wǎng)頁信息职祷,提取數(shù)據(jù)——翻頁——讀取網(wǎng)頁信息氏涩,讀取數(shù)據(jù)……
第一步:打開瀏覽器
導(dǎo)入selenium庫,以便打開網(wǎng)頁:
from selenium import webdriver
導(dǎo)入Keys堪旧,以便能輸入關(guān)鍵詞數(shù)據(jù)和選中工作地點和職位類別:
from selenium.webdriver.common.keys import Keys
定義打開瀏覽器的函數(shù)削葱,找到關(guān)鍵詞位置并選中:
def open_browser(url): #打開瀏覽器,并選擇杭州淳梦,技術(shù)崗析砸,輸入關(guān)鍵詞‘?dāng)?shù)據(jù)’進行查找
? ? browser.get(url)
? ? elem = browser.find_element_by_xpath('/html/body/div[4]/div[2]/div/div[1]/div/div[1]/span/span/a[1]').click()
? ? time.sleep(2)
? ? elem_1 = browser.find_element_by_xpath('/html/body/div[4]/div[2]/div/div[1]/div/div[2]/span/a[3]').click()
? ? time.sleep(2)
? ? elem_2 = browser.find_element_by_id('keyword')
? ? elem_2.clear()
? ? elem_2.send_keys('數(shù)據(jù)'+Keys.RETURN)
? ? time.sleep(10)
(在分析網(wǎng)頁的時候,發(fā)現(xiàn)里面很多數(shù)據(jù)的標簽的父節(jié)點一樣爆袍,因此選用xpath爬取數(shù)據(jù)更加便捷)
第二步:讀取網(wǎng)頁信息首繁,提取數(shù)據(jù)
先讀取當(dāng)前網(wǎng)頁信息
#------------------------讀取招聘頁面信息---------------------------------
def read_page():
? ? Content = browser.page_source
? ? return Content
之后基于獲得的網(wǎng)頁信息,提取數(shù)據(jù)
def get_data(Content):
? ? selector=etree.HTML(Content)
? ? Job_information1=[]
? ? Job_information2=[]
? ? for i in range(1,20,2): #網(wǎng)頁里面的很多信息的父節(jié)點相同陨囊,因此用Xpath爬取弦疮,并替換相應(yīng)位置的數(shù)字會更快捷一些
? ? ? ? job_name=selector.xpath(r'/html/body/div[4]/div[2]/div/div[2]/table/tbody/tr[%s]/td[1]/span/a/text()'%(i))[0].strip()
? ? ? ? job_characteristic=selector.xpath(r'/html/body/div[4]/div[2]/div/div[2]/table/tbody/tr[%s]/td[2]/span/text()'%(i))[0].strip()
? ? ? ? job_location=selector.xpath(r'/html/body/div[4]/div[2]/div/div[2]/table/tbody/tr[%s]/td[3]/span/text()'%(i))[0].strip()
? ? ? ? recruit_number=selector.xpath(r'/html/body/div[4]/div[2]/div/div[2]/table/tbody/tr[%s]/td[4]/span/text()'%(i))[0].strip()
? ? ? ? job_updatetime=selector.xpath(r'/html/body/div[4]/div[2]/div/div[2]/table/tbody/tr[%s]/td[5]/span/text()'%(i))[0].strip()
? ? ? ? job_information1=job_name+'@'+job_characteristic+'@'+job_location+'@'+recruit_number+'@'+job_updatetime+'@' #用@替換便于后期在excel中分列
? ? ? ? Job_information1.append(job_information1)
? ? for j in range(2,21,2):
? ? ? ? job_description=selector.xpath(r'/html/body/div[4]/div[2]/div/div[2]/table/tbody/tr[%s]/td/div/p[1]/text()'%(j)) #崗位描述和崗位要求兩個結(jié)果是列表
? ? ? ? job_request=selector.xpath(r'/html/body/div[4]/div[2]/div/div[2]/table/tbody/tr[%s]/td/div/p[2]/text()'%(j))
? ? ? ? job_Description=''
? ? ? ? job_Request=''
? ? ? ? for k in range(len(job_description)):
? ? ? ? ? ? job_Description+=job_description[k].strip()
? ? ? ? for h in range(len(job_request)):
? ? ? ? ? ? job_Request+=job_request[h].strip()
? ? ? ? job_information2=job_Description+'@'+job_Request
? ? ? ? Job_information2.append(job_information2)
? ? return Job_information1,Job_information2
第三步:翻頁
顯而易見,這個點擊右箭頭就好了蜘醋,不過我在這里試了好幾種發(fā)現(xiàn)’>’的方式胁塞,發(fā)現(xiàn)by_link_text這種方式效果最好
def change_page():
? ? elem_3 = browser.find_element_by_link_text('>').click()
隨后只要把所有函數(shù)粘結(jié)起來就好了!
下面對獲得的數(shù)據(jù)進行下可視化處理,看看能不能發(fā)現(xiàn)什么規(guī)律呢啸罢?
首先编检,從時間維度看阿里在12月之前招聘需求相對較少,僅在11月20日出現(xiàn)過一次105人的小高峰扰才。隨后進入12月允懂,招聘需求顯著增加,圣誕節(jié)達到峰值招聘423人衩匣。
這是為什么呢蕾总?作為一個沒有離職過的人不懂啊,和職場的幾個朋友(跳槽老油條)交流后琅捏,確認了是因為企業(yè)為了避免年后大量人員跳槽造成的用人荒生百,而提前做的人才儲備∥缟看來以后離職雖說年終獎要拿置侍,但是11月份之前一定要先把簡歷優(yōu)化好啊。
進一步拦焚,按照招聘方向統(tǒng)計結(jié)果也確認了蜡坊,隨著時間進入12月各個方向的人員招聘確實陸續(xù)增多,排在前三位的分別是:開發(fā)崗赎败,算法崗秕衙,數(shù)據(jù)崗。
接著看下僵刮,各個部門在招聘過程中的需求情況据忘。螞蟻金服以22.2%的比例遙遙領(lǐng)先,阿里云11.8%跟隨其后搞糕。足見勇吊,現(xiàn)在還是金融,云計算這些領(lǐng)域的市場缺口比較大啊窍仰,基礎(chǔ)設(shè)施事業(yè)群第三汉规,百度了一下,感覺是為其他業(yè)務(wù)部門提供技術(shù)支持的部門驹吮,可見阿里對平臺框架構(gòu)建的重視针史。
進一步量化分析下各個部門17年最后一個季度的招聘情況。螞蟻金服最后一個季度招聘1449人碟狞,發(fā)布招聘信息286次啄枕。螞蟻金服真的這么缺人么?
我基于時間線族沃,對其中重復(fù)的職位名稱進行了對比(這其中還不包括崗位描述一模一樣但是名稱不一樣的職位)频祝,有93個職位發(fā)布信息次數(shù)超過2次泌参,而且這其中一個職位最少要2個人,最多的例如下面這個位置居然一次需要40名java工程師常空。這個職位自12月20號發(fā)布以來及舍,居然在25號和1月3號,又重新發(fā)布了2次(而且數(shù)量一次也沒有減少哦)窟绷。又不是民工,這種高技術(shù)工種咐柜,5天時間招40個人的可能性不大吧兼蜈。可見這個位置的需求比較迫切拙友,另外是不是也能說明這個部門的領(lǐng)導(dǎo)比較push呢为狸?所以我個人以為,金服未必有這么大的人才缺口遗契,有些崗位比較緊迫辐棒,短時間內(nèi)發(fā)布了多次招聘信息而已。
另外牍蜂,有些部門招聘人數(shù)不多漾根,但是卻招聘了很多次,如基礎(chǔ)建設(shè)事業(yè)群和安全部鲫竞,是不是也是因為發(fā)布招聘信息次數(shù)過多呢辐怕?
另外,我依據(jù)部門和工作方向信息進一步分析了下各個部門內(nèi)部的招聘情況从绘〖氖瑁可見,開發(fā)方向在幾個大的部門都是招聘的主要需求方向僵井。只有安全部和iDST兩個部門陕截,對算法和數(shù)據(jù)方面的招聘更多一些。
好了批什,知道了阿里內(nèi)部大體的招聘情況农曲。下面,我們通過幾個云圖看下幾個相關(guān)部門的招聘要求吧渊季。由于朋蔫,我爬取的是社招頁面,所以每個部門要求最多的都是“經(jīng)驗”却汉,不過由于分詞用的還不太好驯妄,有些連詞還過濾的不太好。這里不做過多解讀合砂。
阿里云招聘關(guān)鍵詞
螞蟻金服招聘關(guān)鍵詞
阿里達摩院招聘關(guān)鍵詞
人工智能招聘關(guān)鍵詞
針對以上分析做一個總結(jié):
1. 考慮到年后跳槽人數(shù)會顯著增加青扔,為避免企業(yè)“用人荒”,很多部門從12月份已經(jīng)開始進行大規(guī)模的人才儲備;
2. 阿里目前大數(shù)據(jù)方面的主要業(yè)務(wù)依然是面向金融(螞蟻金服)微猖,IT(阿里云計算等)谈息。招聘人員的需求前三位的依次為:開發(fā)崗,算法崗凛剥,數(shù)據(jù)崗侠仇;
3. 求職的時候,多留意一下那些短期內(nèi)發(fā)布多次的職位信息犁珠,這些崗位用人需求應(yīng)該更加急迫逻炊,HR也應(yīng)該會更積極的給予反饋。
其實還有很多有價值的信息犁享,感覺不太合適說的太透余素。
覺得對你有幫助的話請給個贊吧,謝謝炊昆!