• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python 爬蟲(chóng)的招聘數(shù)據(jù)可視化分析

    2024-01-23 07:32:38蔡文樂(lè)秦立靜
    物聯(lián)網(wǎng)技術(shù) 2024年1期
    關(guān)鍵詞:爬蟲(chóng)求職者薪資

    蔡文樂(lè),秦立靜

    (甘肅農(nóng)業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,甘肅 蘭州 730070)

    0 引 言

    近年來(lái)各個(gè)高校畢業(yè)人數(shù)增多,面對(duì)各類網(wǎng)絡(luò)招聘網(wǎng)站繁雜紛呈的招聘信息,畢業(yè)生常常要花費(fèi)大量的時(shí)間和精力篩選,如果畢業(yè)生可以根據(jù)自身需求,直觀地了解到各個(gè)行業(yè)的崗位特征和變化趨勢(shì),將有利于求職者快速做出選擇[1]。本文實(shí)現(xiàn)的招聘網(wǎng)數(shù)據(jù)可視化分析系統(tǒng)主要利用基于Python語(yǔ)言開(kāi)發(fā)的高級(jí)Web 框架Django,整個(gè)系統(tǒng)架構(gòu)可以分為數(shù)據(jù)的爬取、數(shù)據(jù)的預(yù)處理、數(shù)據(jù)的存儲(chǔ)、數(shù)據(jù)的可視化分析。

    1 系統(tǒng)介紹

    本文設(shè)計(jì)的系統(tǒng)功能模塊如圖1 所示。首先,通過(guò)Python 的爬蟲(chóng)框架,利用爬蟲(chóng)技術(shù)實(shí)現(xiàn)對(duì)目標(biāo)網(wǎng)頁(yè)的爬??;對(duì)網(wǎng)站的URL 發(fā)出請(qǐng)求,在URL 接收到請(qǐng)求并返回結(jié)果后進(jìn)行分析,通過(guò)Python 的BeautifulSoup 解析庫(kù)對(duì)系統(tǒng)所需要的數(shù)據(jù)信息進(jìn)行解析;然后以CSV 文件的形式保存,主要提取返回結(jié)果中的薪資水平、工作經(jīng)驗(yàn)、學(xué)歷程度、公司規(guī)模、公司名稱等相關(guān)信息;其次,對(duì)數(shù)據(jù)進(jìn)行處理,將導(dǎo)入到系統(tǒng)的數(shù)據(jù)文件進(jìn)行讀入,連接MySQL 數(shù)據(jù)庫(kù),再對(duì)數(shù)據(jù)進(jìn)行增刪改查。在目標(biāo)網(wǎng)頁(yè)上爬取相應(yīng)的數(shù)據(jù)信息過(guò)程中,爬取到的數(shù)據(jù)信息中必然會(huì)存在一些重復(fù)冗雜的數(shù)據(jù),是因?yàn)樵谶\(yùn)行爬蟲(chóng)程序的過(guò)程中會(huì)出現(xiàn)反爬蟲(chóng)機(jī)制,因此要實(shí)現(xiàn)數(shù)據(jù)去重、刪除文件空值行數(shù)據(jù)等操作;最后,數(shù)據(jù)分析是整個(gè)流程中最重要的階段,主要是將上一階段經(jīng)過(guò)清洗處理的數(shù)據(jù)按照一定的規(guī)則方法進(jìn)行分析處理,為之后的可視化展示提供數(shù)據(jù)支撐[2]。以可視化的形式去展現(xiàn)對(duì)所得數(shù)據(jù)信息分析的結(jié)果,主要采用Python 開(kāi)發(fā)語(yǔ)言去實(shí)現(xiàn)結(jié)果的表達(dá),讀入獲取的數(shù)據(jù)文件并進(jìn)行統(tǒng)計(jì)分析,將分析的結(jié)果進(jìn)行保存;連接相應(yīng)的數(shù)據(jù)庫(kù),HTML 頁(yè)面接收到相應(yīng)的數(shù)據(jù)信息,并在HTML 頁(yè)面中使用相應(yīng)的語(yǔ)法程序?qū)⒔Y(jié)果數(shù)據(jù)動(dòng)態(tài)添加到相應(yīng)的柱狀圖、餅圖等圖表中。

    圖1 系統(tǒng)功能模塊

    2 相關(guān)技術(shù)

    2.1 Scrapy 爬蟲(chóng)

    網(wǎng)絡(luò)爬蟲(chóng)技術(shù)是通過(guò)編寫計(jì)算機(jī)爬蟲(chóng)程序,按照一定的規(guī)則,爬取目標(biāo)網(wǎng)頁(yè)的數(shù)據(jù)信息。采集有價(jià)值的數(shù)據(jù),過(guò)濾掉無(wú)效的數(shù)據(jù),得到充足的數(shù)據(jù)資源,用于進(jìn)行一系列相關(guān)項(xiàng)目的研究和分析。爬取目標(biāo)網(wǎng)站的招聘信息,對(duì)網(wǎng)站的URL 發(fā)出請(qǐng)求,得到URL 的返回結(jié)果并進(jìn)行分析,部分代碼如下:

    2.2 MySQL 數(shù)據(jù)庫(kù)

    關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL,是Oracle 旗下的產(chǎn)品,開(kāi)發(fā)公司為MySQL AB,在當(dāng)前盛行的數(shù)據(jù)庫(kù)中占據(jù)一席之地,在Web 應(yīng)用方面是最好的RDBMS 應(yīng)用軟件之一。關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)并不是放置在一個(gè)大的數(shù)據(jù)倉(cāng)庫(kù),而是放在不同的表中,因此這樣的方式加快了處理速度并提高了靈活性。

    2.3 Django 框架

    Django 的程序編寫由Python 來(lái)實(shí)現(xiàn),是一個(gè)開(kāi)放源代碼的Web 應(yīng)用框架,也是Python 編程語(yǔ)言驅(qū)動(dòng)的主要來(lái)源。Django 架構(gòu)能夠快速方便地創(chuàng)建出高品質(zhì)、易維護(hù)、數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序。除此之外,Django 還具有強(qiáng)大的可擴(kuò)展性,這是因?yàn)樗哂泄δ軓?qiáng)大的第三方插件。Django 框架的設(shè)計(jì)模式與MVC 的設(shè)計(jì)模式異曲同工,稱為MTV。MTV 就是Model、Template 和View 三個(gè)單詞的簡(jiǎn)寫,分別表示模型、模版和視圖[3-4]。由于在Django 里面更加關(guān)注模型(Model)、模板(Template)和視圖(Views),因此使用Django 框架會(huì)大大提高工作效率。

    2.4 Selenium 應(yīng)用測(cè)試

    Web 程序的測(cè)試主要采用Selenium 在瀏覽器中進(jìn)行。首先啟動(dòng)瀏覽器后,Webdriver 會(huì)將瀏覽器綁定到特定端口作為Remote Server;創(chuàng)建Sessionld 是由客戶端借助ComandExecutor來(lái)實(shí)現(xiàn)的,同時(shí)發(fā)送請(qǐng)求給Remote Server;Remote Server 在收到請(qǐng)求后,調(diào)用Webdriver 進(jìn)行操作,并將響應(yīng)的結(jié)果返回給客戶端。

    3 系統(tǒng)實(shí)現(xiàn)

    3.1 數(shù)據(jù)采集模塊

    為了能夠快速獲取到目標(biāo)網(wǎng)頁(yè)的數(shù)據(jù)信息,實(shí)現(xiàn)數(shù)據(jù)信息的分析和可視化,所以在數(shù)據(jù)采集模塊主要采取的是網(wǎng)絡(luò)爬蟲(chóng)技術(shù)。本文系統(tǒng)需要的數(shù)據(jù)量大,一般的爬取技術(shù)爬取數(shù)據(jù)信息的效率低下,而且容易遭受反爬蟲(chóng)機(jī)制。因此,本文系統(tǒng)的實(shí)現(xiàn)主要采取Scrapy 分布式爬蟲(chóng)框架。Scrapy 框架是基于Python 實(shí)現(xiàn)爬取Web 站點(diǎn)、提取結(jié)構(gòu)化數(shù)據(jù)的應(yīng)用框架,可用于數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)測(cè)、自動(dòng)化測(cè)試等,具有結(jié)構(gòu)簡(jiǎn)單、靈活性強(qiáng)、高效迅速的特點(diǎn)[5-6]。本文選用BOSS直聘網(wǎng)站進(jìn)行相關(guān)數(shù)據(jù)的獲取。數(shù)據(jù)爬蟲(chóng)的基本流程主要為發(fā)起請(qǐng)求、解析內(nèi)容、獲取響應(yīng)的內(nèi)容以及數(shù)據(jù)保存。數(shù)據(jù)的采集過(guò)程就相當(dāng)于用戶在網(wǎng)頁(yè)上對(duì)自己所需要的數(shù)據(jù)進(jìn)行搜集。

    (1)確定爬取對(duì)象

    本文主要實(shí)現(xiàn)對(duì)BOSS 直聘網(wǎng)站的相關(guān)數(shù)據(jù)進(jìn)行爬取,爬取數(shù)據(jù)信息的主要內(nèi)容包括薪資、工作經(jīng)驗(yàn)、學(xué)歷要求、公司名稱、所在行業(yè)、崗位要求、公司地址等,將爬取的數(shù)據(jù)進(jìn)行預(yù)處理,最后實(shí)現(xiàn)數(shù)據(jù)分析。

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

    網(wǎng)絡(luò)爬蟲(chóng)并不會(huì)對(duì)所需網(wǎng)頁(yè)的界面進(jìn)行一系列的操作,只需要模擬人工去訪問(wèn)所需的網(wǎng)頁(yè)。因此,爬蟲(chóng)之前對(duì)所需網(wǎng)頁(yè)結(jié)構(gòu)的了解是必不可少的一個(gè)步驟。利用瀏覽器自帶的開(kāi)發(fā)者工具對(duì)爬取網(wǎng)頁(yè)進(jìn)行深入挖掘和分析,了解各個(gè)信息元素之間的異同點(diǎn)。最后實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)程序的編寫,需要查看網(wǎng)頁(yè)HTML 的代碼,對(duì)所需數(shù)據(jù)信息進(jìn)行核查。

    (3)編寫Scrapy 爬蟲(chóng)程序

    發(fā)起請(qǐng)求、解析信息、獲取響應(yīng)內(nèi)容和存儲(chǔ)數(shù)據(jù)是爬蟲(chóng)框架的基本流程。首先,HTTP 向目標(biāo)站點(diǎn)發(fā)起Request 請(qǐng)求后等待服務(wù)器的響應(yīng),如果服務(wù)器的響應(yīng)是正常的,則會(huì)得到一個(gè)Response,這個(gè)Response 中包含了獲取到網(wǎng)頁(yè)的數(shù)據(jù)信息,這些數(shù)據(jù)信息的類型可能有HTML、JSON 字符串、二進(jìn)制數(shù)據(jù)等多種類型,并且保存的方式多樣化,可以是純文本形式,也可以保存至數(shù)據(jù)庫(kù)。

    基于Scrapy 爬蟲(chóng)框架的招聘數(shù)據(jù)信息可視化系統(tǒng),主要由配置文件settings.py、主程序文件spiderMain.py等文件組成。其中,對(duì)抓取到的目標(biāo)網(wǎng)頁(yè)數(shù)據(jù)信息和數(shù)據(jù)結(jié)構(gòu)的分析主要通過(guò)數(shù)據(jù)字段的文件來(lái)實(shí)現(xiàn),并且相應(yīng)的數(shù)據(jù)字段是通過(guò)scrapy.Field()方法建立的。如圖2 所示是爬取到的部分信息。獲取到所需的部分崗位信息后進(jìn)行存儲(chǔ),如WorkExperience 存儲(chǔ)工作經(jīng)驗(yàn)、Salary 存儲(chǔ)工作薪資等,部分代碼如下:

    圖2 爬取數(shù)據(jù)

    3.2 數(shù)據(jù)的存儲(chǔ)與處理模塊

    通過(guò)網(wǎng)絡(luò)爬蟲(chóng)技術(shù)能夠采集到多樣化的網(wǎng)頁(yè)數(shù)據(jù),但同時(shí)也存在各種各樣的問(wèn)題,如數(shù)據(jù)缺失、冗余、重復(fù)、不一致﹑數(shù)據(jù)結(jié)構(gòu)錯(cuò)亂等。如果對(duì)原始數(shù)據(jù)沒(méi)有進(jìn)行處理而是直接進(jìn)行分析,不僅會(huì)使數(shù)據(jù)決策的效率受到影響,甚至?xí)霈F(xiàn)直接決策的錯(cuò)誤。因此,在系統(tǒng)的實(shí)現(xiàn)過(guò)程中,對(duì)原始數(shù)據(jù)的處理成為了至關(guān)重要的問(wèn)題,原始數(shù)據(jù)中可能會(huì)存在數(shù)據(jù)的缺失、重復(fù)等問(wèn)題,需要對(duì)獲取到的數(shù)據(jù)信息進(jìn)行相關(guān)的預(yù)處理操作,最后提供給Hive 進(jìn)行統(tǒng)計(jì)和分析。

    在本文系統(tǒng)的搭建過(guò)程中,將數(shù)據(jù)導(dǎo)入使用Python 編寫的Pandas 庫(kù)的DataFrames 中,從而對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)清理,將重復(fù)無(wú)用的信息排查出去,并且對(duì)數(shù)據(jù)進(jìn)行分類整理、聚類分析[7-8],如圖3 所示。將所獲取到的每一條崗位信息,按照一定的規(guī)則處理完成之后,存儲(chǔ)在MySQL 數(shù)據(jù)庫(kù)中,包括工資、學(xué)歷、工作經(jīng)驗(yàn)等。最后將處理得到的數(shù)據(jù)保存為CSV文件,同時(shí)篩選出有價(jià)值的數(shù)據(jù)信息以可視化的方式展現(xiàn)。

    圖3 數(shù)據(jù)庫(kù)分類

    3.3 數(shù)據(jù)的可視化分析模塊

    數(shù)據(jù)可視化是一個(gè)比較抽象的概念,它的范圍在不斷地?cái)U(kuò)大,主要是從數(shù)據(jù)中抽象出信息,以一種清晰且簡(jiǎn)單明了的方式展現(xiàn)出來(lái)。同時(shí)也是信息溝通的最有效手段。數(shù)據(jù)可視化分析主要就是將預(yù)處理后的原始數(shù)據(jù)使用一些比較有特色的技術(shù)方法,如圖形圖像處理、計(jì)算機(jī)視覺(jué)以及用戶界面,通過(guò)一定的表達(dá)、建模以及對(duì)表面、立體、屬性和動(dòng)畫的顯示,以更加清晰的可視化方式呈現(xiàn)。數(shù)據(jù)可視化的主要目的在于:使用簡(jiǎn)單的圖形圖像,更加清晰有效地傳達(dá)和溝通所獲取的數(shù)據(jù)信息。

    此系統(tǒng)主要采用Python 的Django 框架對(duì)前端頁(yè)面進(jìn)行設(shè)計(jì),可視化圖表展示部分的實(shí)現(xiàn)采用EChart。EChart 是一個(gè)具備強(qiáng)大功能和強(qiáng)兼容性的可視化庫(kù),會(huì)通過(guò)散點(diǎn)圖、餅圖、折線圖和不同頻次的詞云圖等可視化方式為求職人員清晰地展現(xiàn)招聘信息,使求職過(guò)程變得更快速高效。以下的可視化結(jié)果分析均以分析C 語(yǔ)言工程師崗位為例。

    3.3.1 薪資情況

    如圖4 所示,從薪資分布可以看出,計(jì)算機(jī)類行業(yè)的薪資待遇在高薪資職業(yè)中占據(jù)一定的地位,此類行業(yè)普遍薪資水平較高。薪資在0 ~1 萬(wàn)元和4 萬(wàn)元以上的人數(shù)所占比例較少,大多數(shù)求職者的薪資維持在1 ~2 萬(wàn)元、2 ~3 萬(wàn)元和3 ~4 萬(wàn)元之間,趨于一個(gè)穩(wěn)定的狀態(tài)。薪資的高低與求職者自身所具備的能力水平直接相關(guān),也與該公司的價(jià)值有關(guān),因此薪資是求職者所看重的一個(gè)非常重要的方面。

    圖4 薪資分布

    3.3.2 崗位需求

    互聯(lián)網(wǎng)時(shí)代,我們被各種各樣的數(shù)據(jù)所包圍著,為了更快地將有價(jià)值的數(shù)據(jù)提取出來(lái),并且很好地去利用這些數(shù)據(jù),因此必須先通過(guò)計(jì)算機(jī)相關(guān)技術(shù)去處理這些冗雜的數(shù)據(jù)。隨著互聯(lián)網(wǎng)、大數(shù)據(jù)等公司越來(lái)越多,計(jì)算機(jī)行業(yè)的崗位在大學(xué)生求職中也越來(lái)越熱門化。以C 語(yǔ)言工程師崗位為例,如圖5 所示為行業(yè)求職崗位數(shù)量圖,可以看出計(jì)算機(jī)軟件行業(yè)所占的比例高于其他行業(yè),當(dāng)前計(jì)算機(jī)行業(yè)處于一種競(jìng)爭(zhēng)激烈的狀態(tài)。

    圖5 行業(yè)求職崗位分布

    以C 語(yǔ)言工程師崗位為例,如圖6 所示,互聯(lián)網(wǎng)類的公司人數(shù)處于兩個(gè)邊緣,1 000 人以下的小型公司一般為大學(xué)畢業(yè)者創(chuàng)業(yè)的小型公司或者其他初創(chuàng)公司等,這些公司中100 人以下的公司所占比例較大;1 000 人以上的大型成熟穩(wěn)步發(fā)展的公司中,10 000 人以上的公司所占比例最大。每一個(gè)公司的成員構(gòu)成也體現(xiàn)出公司規(guī)模的大小、工作效率高低以及內(nèi)核的成熟度等。因此公司規(guī)模的大小也是求職者尋找目標(biāo)公司時(shí)所重點(diǎn)關(guān)注的一個(gè)方面。

    圖6 公司人數(shù)分布

    3.3.3 城市分布

    如圖7 所示,C 語(yǔ)言工程師人數(shù)主要分布在比較發(fā)達(dá)的一線城市,如北京、深圳等。原因在于這些城市的互聯(lián)網(wǎng)行業(yè)發(fā)展較好,求職者選擇這些城市會(huì)有較好的發(fā)展。

    圖7 C 語(yǔ)言工程師地域分布

    3.3.4 福利水平

    以C 語(yǔ)言工程師崗位為例,如圖8 所示,可以看出在求職者所關(guān)注的眾多福利待遇之中,節(jié)日福利、年終獎(jiǎng)、五險(xiǎn)一金出現(xiàn)的頻次較高,這些對(duì)求職者來(lái)說(shuō)都是最基本的保障;同時(shí),帶薪年假、員工旅游和定期體檢等也是人們求職過(guò)程中所關(guān)心的。求職者在求職的過(guò)程中非常關(guān)注目標(biāo)公司給員工創(chuàng)造的基本福利保障,同時(shí)各種福利保障也是激勵(lì)就業(yè)者創(chuàng)造工作業(yè)績(jī)、促進(jìn)公司提升的重要手段[9-10]。

    圖8 求職者關(guān)注的公司福利

    3.3.5 公司名稱

    如圖9 所示,隨著互聯(lián)網(wǎng)、大數(shù)據(jù)的熱度越來(lái)越高,互聯(lián)網(wǎng)公司越來(lái)越多,很多公司名稱中都會(huì)出現(xiàn)“科技”“信息”“軟件”等詞匯,并且出現(xiàn)頻次很高??梢钥闯觯陙?lái)信息科技公司已經(jīng)逐漸發(fā)展起來(lái),尤其是在上海、北京等一線城市分布得更為廣泛。

    圖9 公司名稱

    4 結(jié) 語(yǔ)

    隨著網(wǎng)絡(luò)科技的高速發(fā)展,傳統(tǒng)的招聘方式已經(jīng)不再適合企業(yè)和人才的需求。本文設(shè)計(jì)開(kāi)發(fā)出一種基于網(wǎng)絡(luò)爬蟲(chóng)的招聘信息數(shù)據(jù)可視化分析系統(tǒng),通過(guò)此系統(tǒng)能夠篩選出有價(jià)值的招聘信息,使得求職者在求職的過(guò)程中對(duì)自己的崗位有清晰的認(rèn)知和定位。本文所實(shí)現(xiàn)的招聘數(shù)據(jù)可視化分析系統(tǒng),主要利用Python 爬蟲(chóng)框架實(shí)現(xiàn)所需網(wǎng)頁(yè)數(shù)據(jù)信息的獲取,對(duì)采集到的原始數(shù)據(jù)進(jìn)行預(yù)處理操作;然后采用Hive 針對(duì)薪資分布、行業(yè)數(shù)量、公司人數(shù)、城市分布,以及公司福利和名稱出現(xiàn)頻次進(jìn)行統(tǒng)計(jì)及分析;最后通過(guò)ECharts 將采集到的信息以各類圖表和詞云圖的方式進(jìn)行可視化展現(xiàn),讓求職者更加直觀地看到各類分析結(jié)果,清楚地了解求職現(xiàn)狀,為求職者提供了一個(gè)更好的求職分析平臺(tái),幫助求職者在求職的過(guò)程中找準(zhǔn)自身定位,及時(shí)調(diào)整求職策略。

    猜你喜歡
    爬蟲(chóng)求職者薪資
    起初為娛樂(lè),現(xiàn)在做招聘:直播幫中國(guó)求職者找工作
    利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
    不簡(jiǎn)單以“住房薪資”引才——遵循“一步一重天”的人才發(fā)展規(guī)律
    基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
    利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
    加納移民局招聘:有妊娠紋不行
    民生表情
    面試中的12個(gè)禁忌
    大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
    電子制作(2017年9期)2017-04-17 03:00:46
    梅州市| 荣成市| 资兴市| 永年县| 桂阳县| 贵阳市| 扬中市| 鸡泽县| 罗甸县| 元阳县| 肇州县| 新平| 嘉兴市| 绥芬河市| 呼图壁县| 滦南县| 乌苏市| 桃园县| 阳信县| 额尔古纳市| 阿克| 辽阳市| 贵州省| 天峨县| 阳西县| 高雄县| 绍兴市| 玉门市| 罗山县| 南华县| 郎溪县| 拜城县| 汪清县| 青铜峡市| 东至县| 乐平市| 南丹县| 南京市| 桃园市| 左权县| 枣庄市|