国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的就業(yè)信息獲取與分析

2021-05-28 12:38龐麗彭立偉余豪夏童趙付英
現(xiàn)代計(jì)算機(jī) 2021年10期
關(guān)鍵詞:爬蟲薪資工程師

龐麗,彭立偉,余豪,夏童,趙付英

(1.西南石油大學(xué)網(wǎng)絡(luò)與信息化中心,成都610500;2.西南石油大學(xué)機(jī)電工程學(xué)院,成都610500;3.西南石油大學(xué)電氣信息學(xué)院,成都610500;4.西南石油大學(xué)地球科學(xué)與技術(shù)學(xué)院,成都610500;5.西南石油大學(xué)化學(xué)化工學(xué)院,成都610500)

0 引言

隨著高校的擴(kuò)招,社會(huì)學(xué)歷普遍提高,大學(xué)畢業(yè)生人數(shù)逐年上漲,大學(xué)生就業(yè)形式也變得更加嚴(yán)峻,如何及時(shí)可持續(xù)性的獲取有效就業(yè)信息,并加以分析做出相應(yīng)決策對(duì)于大學(xué)生而言顯得尤為重要。通過手動(dòng)搜索招聘網(wǎng)站、學(xué)校/企業(yè)/事業(yè)單位官網(wǎng)、微信公眾號(hào)、各省市人力資源網(wǎng)等發(fā)布的招聘信息,可以獲得海量的就業(yè)信息,然而這種方式都需要到相應(yīng)網(wǎng)站翻頁查找,重復(fù)的在不同網(wǎng)站之間切換,存在耗費(fèi)時(shí)間長、搜索速度慢、信息獲取不及時(shí)、不利于集中分析統(tǒng)計(jì)等缺點(diǎn),導(dǎo)致大學(xué)生容易錯(cuò)過適合的崗位信息。針對(duì)目前的這種情況,本文提出了基于Python的就業(yè)信息獲取與分析的方法,以期為大學(xué)生搜索分析就業(yè)信息提供一定的參考價(jià)值。

1 網(wǎng)絡(luò)爬蟲簡(jiǎn)介

網(wǎng)絡(luò)爬蟲又稱為網(wǎng)絡(luò)蜘蛛,是一種按照一定的規(guī)則,自動(dòng)抓取萬維網(wǎng)信息的程序或腳本[1],基本原理是模擬計(jì)算機(jī)對(duì)服務(wù)器發(fā)起Requests請(qǐng)求,然后接收服務(wù)器端返回的Response內(nèi)容對(duì)其進(jìn)行解析,以提取所需信息。根據(jù)網(wǎng)絡(luò)爬蟲爬取的對(duì)象和范圍不同可將其分為通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲(即主題網(wǎng)絡(luò)爬蟲)[2],其中,通用網(wǎng)絡(luò)爬蟲爬取目標(biāo)范圍廣,通常用于搜索引擎;而聚焦網(wǎng)絡(luò)爬蟲則是針對(duì)某個(gè)特定目標(biāo)和主題進(jìn)行爬取[3]。Python因其語言的簡(jiǎn)潔性、易讀性以及可擴(kuò)展性[4],在編寫網(wǎng)絡(luò)爬蟲時(shí)具有其他語言不可比擬的優(yōu)勢(shì),其強(qiáng)大的第三方庫不僅極大節(jié)省了開發(fā)人員編寫修改代碼的時(shí)間,還支持?jǐn)?shù)據(jù)清洗和可視化,為后期的數(shù)據(jù)整理和分析提供了便捷,因此,本文采取Python語言編寫爬蟲代碼,采用主題爬蟲的策略來實(shí)現(xiàn)就業(yè)信息的批量獲取。

2 爬蟲程序設(shè)計(jì)

獲取相應(yīng)網(wǎng)站的信息首先需要手動(dòng)翻頁,通過觀察列表頁的URL,找到URL的構(gòu)成規(guī)律;然后通過循環(huán)語句,依次將URL取出;最后抓取URL頁面相應(yīng)的數(shù)據(jù)并存儲(chǔ)在本地進(jìn)行數(shù)據(jù)清洗及分析。本文擬以拉勾網(wǎng)為例,通過編寫爬蟲程序抓取“Python”相關(guān)崗位的就業(yè)信息,獲取的信息包括公司名稱、公司規(guī)模、招聘崗位、公司福利、工作地址、薪資水平、工作經(jīng)驗(yàn)、職位類型、學(xué)歷要求、發(fā)布日期等,并將抓取的就業(yè)信息保存在MongoDB數(shù)據(jù)庫中,以便后期進(jìn)行數(shù)據(jù)處理和可視化分析。

2.1 分析網(wǎng)頁結(jié)構(gòu)

使用谷歌瀏覽器進(jìn)入拉勾網(wǎng),輸入Python關(guān)鍵字搜索就業(yè)信息,通過查看源代碼發(fā)現(xiàn)網(wǎng)頁元素不在源代碼中,判斷使用了AJAX(異步加載)技術(shù),這種網(wǎng)頁要使用逆向工程來抓取數(shù)據(jù)[5]。利用谷歌瀏覽器開發(fā)者工具,選中XHR(可擴(kuò)展超文本傳輸請(qǐng)求),通過觀察Preview標(biāo)簽,可發(fā)現(xiàn)我們要獲取的信息都存放在Response返回的JSON文件中,進(jìn)一步手動(dòng)翻取拉勾網(wǎng)頁面,請(qǐng)求的URL并未發(fā)生變化,進(jìn)一步分析發(fā)現(xiàn)是利用POST方法提交表單數(shù)據(jù)依據(jù)pn字段來實(shí)現(xiàn)頁數(shù)的變化,通過這些分析編寫程序代碼構(gòu)造出列表頁。同時(shí)為避免網(wǎng)站把訪問當(dāng)作爬蟲程序加以阻止,要使用cookie信息進(jìn)行模擬登錄,以獲取信息。

2.2 獲取就業(yè)信息數(shù)據(jù)

就業(yè)信息獲取的實(shí)現(xiàn)主要包括三個(gè)部分:一是編寫getWebResult函數(shù),用于獲取Response返回的JSON文件,從而得到崗位全部信息。首先需要?jiǎng)?chuàng)建一個(gè)Session對(duì)象,使用Session維持同一個(gè)對(duì)話,從而獲取該對(duì)話的cookie,利用cookie實(shí)現(xiàn)模擬登錄,然后獲取JSON文件職位相關(guān)信息。

二是編寫warefare_combine、address_combine函數(shù)對(duì)崗位信息中的福利數(shù)據(jù)和地址數(shù)據(jù)進(jìn)行預(yù)處理,在爬取信息的時(shí)候,有的公司的福利、所在城市或城市所屬區(qū)域沒有寫,讀取時(shí)會(huì)返回結(jié)果None,由于None不能與字符串相加會(huì)導(dǎo)致爬取報(bào)錯(cuò),所以需要定義合并福利和地址的函數(shù),當(dāng)返回結(jié)果為None時(shí),將其設(shè)置為空字符'',然后再實(shí)現(xiàn)相加。

三是編寫getJob_Infos函數(shù),用于將獲取的崗位信息存儲(chǔ)在MongoDB數(shù)據(jù)庫中,需要導(dǎo)入PyMongo庫文件,連接數(shù)據(jù)庫并建立數(shù)據(jù)庫和數(shù)據(jù)集合。由于要將爬取的信息插入到數(shù)據(jù)庫中進(jìn)行存儲(chǔ),在循環(huán)調(diào)用函數(shù)之前還需要設(shè)置一個(gè)用來標(biāo)示csv是否創(chuàng)建表頭的參數(shù),表頭包括:公司、規(guī)模、招聘崗位、福利、工作地址、工資、工作經(jīng)驗(yàn)、職位類型、學(xué)歷要求以及發(fā)布時(shí)間,表頭創(chuàng)建完成之后再將爬取的信息逐條插入到數(shù)據(jù)庫中。循環(huán)體主要實(shí)現(xiàn)兩部分功能,一是循環(huán)讀取崗位信息并將福利和工作地址進(jìn)行合并,避免出現(xiàn)爬取程序失敗,二是循環(huán)將信息逐條插入到數(shù)據(jù)庫中,表頭所對(duì)應(yīng)的字段名可利用Preview標(biāo)簽查看JSON文件,以便準(zhǔn)確讀取相應(yīng)內(nèi)容。通過以上功能的編寫即可爬取python崗位相關(guān)就業(yè)信息。當(dāng)控制臺(tái)提示“爬取信息結(jié)束!”,可在MongoDB數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù),導(dǎo)出的格式為CSV,由于編碼不同,用Excel打開文件會(huì)出現(xiàn)亂碼,先選用記事本打開,選擇編碼方式為ANSI再保存,打開文件后則顯示正常,如圖1展示了爬取的就業(yè)信息。

圖1 爬取的就業(yè)信息

2.3 就業(yè)信息數(shù)據(jù)處理

根據(jù)圖1所展示的爬取結(jié)果可以看出獲取的數(shù)據(jù)存在一些問題,不利于對(duì)數(shù)據(jù)進(jìn)行分析,主要體現(xiàn)在:①工作地址具體到各個(gè)區(qū),不利于宏觀了解Python崗位在各個(gè)城市的需求,需要將工作地址升級(jí)到市級(jí);②工資格式顯示形式為區(qū)間,需要將最低工資和最高工資分開,便于了解Python崗位的薪資水平。選擇Excel作為數(shù)據(jù)處理工具,利用其提供的LEFT函數(shù)、FIND函數(shù)以及MID函數(shù)可以快速有效地對(duì)數(shù)據(jù)進(jìn)行整理分析。

經(jīng)過處理后的就業(yè)信息數(shù)據(jù)如圖2所示。

圖2 處理后的就業(yè)信息

3 就業(yè)信息可視化分析

根據(jù)前面整理好的數(shù)據(jù),利用Excel的圖表功能對(duì)Python崗位招聘信息進(jìn)行可視化分析,并結(jié)合Python的jieba分詞、WordCloud對(duì)崗位類型進(jìn)行詞頻統(tǒng)計(jì)并詞云化。

從學(xué)歷要求來看(如圖3所示),從事Python相關(guān)的職業(yè)對(duì)學(xué)歷要求并不高,84%的崗位僅要求本科學(xué)歷即可,對(duì)碩士研究生的需求僅占2%,更加注重的是工作經(jīng)驗(yàn)(如圖4所示),要求有3-5年工作經(jīng)驗(yàn)的占42%,有1-3年工作經(jīng)驗(yàn)的占30%,應(yīng)屆畢業(yè)生由于沒有相關(guān)工作經(jīng)驗(yàn),符合需求的崗位僅占9%,建議大學(xué)生在校期間多參與實(shí)戰(zhàn)項(xiàng)目或者實(shí)習(xí),了解當(dāng)前技術(shù)的發(fā)展方向,熟悉項(xiàng)目的流程,積累更多的實(shí)戰(zhàn)經(jīng)驗(yàn),以便在擇業(yè)時(shí)有更多選擇的空間。

圖3 Python崗位學(xué)歷要求占比圖

圖4 Python崗位 工作經(jīng)驗(yàn)占比圖

從招聘所在城市來看(如圖5所示),對(duì)Python崗位需求較大的是北京、上海、深圳、廣州這四個(gè)一線城市,其次是杭州、成都、武漢等新一線城市,二三線城市對(duì)Python崗位需求相對(duì)較少,大學(xué)生在求職Python相關(guān)崗位工作時(shí)盡量?jī)?yōu)先選擇一線或者新一線城市,以獲取更多的工作機(jī)會(huì)和更好的發(fā)展前景。

圖5 Python崗位城市需求分布圖

利用Python的jieba分詞,再通過WordCloud將招聘崗位高頻詞進(jìn)行詞云化(如圖6所示),根據(jù)詞云圖生成原理,詞語顯示規(guī)格越突出、距離中心位置越近,詞語出現(xiàn)頻率越高[6],從詞云圖可以看出用人單位對(duì)Python開發(fā)工程師、中高級(jí)工程師、后端開發(fā)工程師以及研發(fā)工程師的需求量較大。進(jìn)一步通過餅狀圖分析,可得出各招聘崗位所占比例,其中Python開發(fā)工程師占44%,中高級(jí)工程師占15%,后端開發(fā)和研發(fā)工程師分別占13%和9%,說明開發(fā)和研發(fā)類的崗位需求量較大,建議在校學(xué)生多學(xué)習(xí)了解開發(fā)工程師所需的技能和要求,以獲得更多的工作機(jī)會(huì)。爬蟲工程師、實(shí)習(xí)生、Python講師所占比例較小,爬蟲工程師的需求遠(yuǎn)小于開發(fā)工程師原因可能在于純爬蟲的崗位需求越來越少,建議大學(xué)生在學(xué)習(xí)爬蟲時(shí)要更多的與數(shù)據(jù)挖掘、數(shù)據(jù)分析相結(jié)合,提高綜合競(jìng)爭(zhēng)力。

圖6 Python崗位數(shù)量占比及詞云圖

為進(jìn)一步了解Python各崗位薪資水平,對(duì)最低工資均值以及最高工資均值進(jìn)行分析。從圖7薪資水平折線圖可以看出,Python相關(guān)崗位除了實(shí)習(xí)生的工資水平較低以外,總體來看其他崗位薪資水平較高。中高級(jí)工程師薪資水平最高,其次是運(yùn)維/測(cè)試工程師、后端開發(fā)及研發(fā)工程師,爬蟲工程師和講師的薪資水平相對(duì)較低,推薦求職者在找工作時(shí)可先考慮招聘范圍較廣的Python開發(fā)工程師,在工作中不斷積累經(jīng)驗(yàn)提高能力,向薪資水平較高的中高級(jí)工程師過渡。

圖7 Python崗位薪資水平折線圖

4 結(jié)語

本文通過分析招聘網(wǎng)站網(wǎng)頁結(jié)構(gòu),利用Python語言及其強(qiáng)大的第三方庫編寫流程代碼,獲取相應(yīng)的就業(yè)信息,并對(duì)收集到的數(shù)據(jù)進(jìn)行清洗整理及分析,結(jié)合可視化圖表及詞云圖了解Python相關(guān)崗位的學(xué)歷要求、城市需求量、崗位分布情況以及薪資水平等,有效的降低了求職者手動(dòng)翻頁瀏覽招聘信息的時(shí)間成本,分析結(jié)論能夠?yàn)榍舐氄咛峁﹨⒖家庖?,同時(shí)也為在校學(xué)生提出了學(xué)習(xí)方向及側(cè)重點(diǎn)的相關(guān)建議。本文的不足之處在于只獲取了單個(gè)網(wǎng)站的就業(yè)信息,下一步的重點(diǎn)將放在如何進(jìn)行多數(shù)據(jù)源的就業(yè)信息獲取,以獲得更加全面的就業(yè)信息。此外,本文主要針對(duì)個(gè)人求職者,因此,只是在獲取就業(yè)信息之后進(jìn)行了簡(jiǎn)單的統(tǒng)計(jì)分析;而對(duì)于高校管理者,如何在獲取海量的就業(yè)信息之后為學(xué)生實(shí)現(xiàn)個(gè)性化的就業(yè)信息推薦,則需要借助一些大數(shù)據(jù)分析技術(shù)。

猜你喜歡
爬蟲薪資工程師
利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
環(huán)保工程師:生來為了“拯救地球”
不簡(jiǎn)單以“住房薪資”引才——遵循“一步一重天”的人才發(fā)展規(guī)律
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
基于Scrapy框架的分布式網(wǎng)絡(luò)爬蟲的研究與實(shí)現(xiàn)
誰搶走了低價(jià)機(jī)票
我想做一名橋梁工程師
開心一刻
新巴尔虎右旗| 宜黄县| 三河市| 原阳县| 天祝| 凉山| 江油市| 凯里市| 兰西县| 富源县| 兴和县| 周口市| 唐山市| 长沙市| 剑河县| 蓝田县| 金山区| 陆丰市| 荆州市| 南昌县| 日照市| 新郑市| 建平县| 伊吾县| 独山县| 金沙县| 西华县| 屯留县| 贺州市| 明星| 永顺县| 台中县| 梁山县| 庆城县| 重庆市| 新河县| 洪湖市| 江北区| 禄丰县| 白水县| 鹤庆县|