拿好這段代碼,愿你求職路上不再迷茫

經(jīng)常有人問(wèn):“我是該學(xué)Angular還是React?該用gulp還是webpack…”
這篇文章就是要 交給大家一把鑰匙,專(zhuān)門(mén)解答這類(lèi)問(wèn)題。

 

解答思路

我一直提倡的是 學(xué)以致用,知行合一,所以當(dāng)我們學(xué)習(xí)和儲(chǔ)備技能的時(shí)候應(yīng)該要和市場(chǎng)相結(jié)合,準(zhǔn)確的說(shuō)應(yīng)該是人才市場(chǎng)。
要了解人才市場(chǎng)有個(gè)非常簡(jiǎn)單的方法——招聘網(wǎng)站。我們上招聘網(wǎng)站搜一搜,看看企業(yè)在招聘的時(shí)候都有哪些技能需求就一目了然了。

可問(wèn)題就是數(shù)據(jù)那么多,如果只抽取部分做參考不夠準(zhǔn)確,一個(gè)個(gè)去看又效率太低。

我覺(jué)得身為開(kāi)發(fā)人員最大的優(yōu)勢(shì)就是 可以用代碼等技術(shù)手段定制所需的工具。所以我們只需要寫(xiě)一段爬蟲(chóng)代碼,把招聘網(wǎng)站上的數(shù)據(jù)“同步”到數(shù)據(jù)庫(kù),然后進(jìn)行統(tǒng)計(jì)分析,就可以進(jìn)行有的放矢地學(xué)習(xí)了。先看一下統(tǒng)計(jì)分析結(jié)果:

動(dòng)手實(shí)踐

以個(gè)人比較喜歡的某招聘網(wǎng)站為例。

網(wǎng)頁(yè)分析

搜索“前端”,人往高處看齊,我們添加一個(gè)過(guò)濾條件“25k-50k”,看看市場(chǎng)對(duì)高級(jí)前端的要求。同時(shí)按下F12打開(kāi)調(diào)試,發(fā)現(xiàn)這里發(fā)送了ajax請(qǐng)求(凡事有利有弊,前后端分離雖然開(kāi)發(fā)效率提高了,但同時(shí)也為爬蟲(chóng)程序降低了難度)。

補(bǔ)充一下:一般分兩種情況:json數(shù)據(jù)和html頁(yè)面,本文兩種情況皆有涉及。

通過(guò)列表我們只能知道公司和職位,點(diǎn)擊鏈接跳轉(zhuǎn)到詳情頁(yè)看到我們想要的信息:崗位職責(zé)和要求。

這里沒(méi)有看到ajax請(qǐng)求,應(yīng)該是后端利用模板直接生成的靜態(tài)頁(yè)面,所以需要解析html,會(huì)略微麻煩一些。

編寫(xiě)代碼

整個(gè)編碼的思路變得很清晰了:

1.分頁(yè)查詢(xún)職位列表
用request模塊發(fā)送get請(qǐng)求,獲取json數(shù)據(jù),然后按照id查詢(xún)html。

2.按職位查詢(xún)?cè)斍椴⑷霂?kù)
用jsdom模塊對(duì)獲取的html進(jìn)行dom解析,這個(gè)模塊很容易上手,可用jquery語(yǔ)法。
將解析的數(shù)據(jù)過(guò)濾,保留崗位職責(zé)和要求信息,利用mongoose保存至數(shù)據(jù)庫(kù)。

3.從數(shù)據(jù)庫(kù)中查詢(xún)結(jié)果
查詢(xún)統(tǒng)計(jì)各技能占比。結(jié)果如開(kāi)頭截圖所示。

統(tǒng)計(jì)結(jié)果只代表了某招聘網(wǎng)站對(duì)高級(jí)前端的技能要求,僅供參考。 程序代碼100多行,具體細(xì)節(jié)可戳
源碼地址:https://github.com/yalishizhude/spider

總結(jié)優(yōu)化

換個(gè)搜索關(guān)鍵詞,換個(gè)網(wǎng)站都可以使用么?

換個(gè)關(guān)鍵詞可以,換個(gè)網(wǎng)站直接使用肯定不行的,首先用開(kāi)發(fā)者工具找出查詢(xún)數(shù)據(jù)的url,然后json數(shù)據(jù)直接處理,如果是html再解析,方法相同,只是解析的字段不同。

明明是寫(xiě)個(gè)爬蟲(chóng),卻說(shuō)是職業(yè)規(guī)劃,不是標(biāo)題黨么?

爬蟲(chóng)跟文中所提的手工統(tǒng)計(jì)、抽樣查看方法一樣,都是手段,只是更高效一些。文章的重點(diǎn)是利用統(tǒng)計(jì)分析的方法來(lái)解決“xx與yy,我該如何選擇”這類(lèi)問(wèn)題。目標(biāo)思維很重要,黑貓白貓抓到老鼠就是好貓。

我不用數(shù)據(jù)庫(kù)直接在內(nèi)存中分析不是更簡(jiǎn)單么?

這樣的確能減少代碼量,但是每次分析都需要重新抓取數(shù)據(jù),效率太低而且容易被反爬蟲(chóng)發(fā)現(xiàn),所以 建議還是將查詢(xún)結(jié)果統(tǒng)計(jì)入庫(kù)。繪圖,出表格…后續(xù)想怎么玩都行~

有沒(méi)有更可靠的分析方法?

當(dāng)然有。文中所提的搜索匹配的分析方式太簡(jiǎn)單了,最理想的方式應(yīng)該是 自動(dòng)挑選出topN的關(guān)鍵詞然后按占比排序。咨詢(xún)了一下做大數(shù)據(jù)的朋友,可以使用 word2vec,有興趣的讀者可以試試。

the end

評(píng)論(0)