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

經常有人問:“我是該學Angular還是React?該用gulp還是webpack…”
這篇文章就是要 交給大家一把鑰匙,專門解答這類問題。

 

解答思路

我一直提倡的是 學以致用,知行合一,所以當我們學習和儲備技能的時候應該要和市場相結合,準確的說應該是人才市場。
要了解人才市場有個非常簡單的方法——招聘網站。我們上招聘網站搜一搜,看看企業在招聘的時候都有哪些技能需求就一目了然了。

可問題就是數據那么多,如果只抽取部分做參考不夠準確,一個個去看又效率太低。

我覺得身為開發人員最大的優勢就是 可以用代碼等技術手段定制所需的工具。所以我們只需要寫一段爬蟲代碼,把招聘網站上的數據“同步”到數據庫,然后進行統計分析,就可以進行有的放矢地學習了。先看一下統計分析結果:

動手實踐

以個人比較喜歡的某招聘網站為例。

網頁分析

搜索“前端”,人往高處看齊,我們添加一個過濾條件“25k-50k”,看看市場對高級前端的要求。同時按下F12打開調試,發現這里發送了ajax請求(凡事有利有弊,前后端分離雖然開發效率提高了,但同時也為爬蟲程序降低了難度)。

補充一下:一般分兩種情況:json數據和html頁面,本文兩種情況皆有涉及。

通過列表我們只能知道公司和職位,點擊鏈接跳轉到詳情頁看到我們想要的信息:崗位職責和要求。

這里沒有看到ajax請求,應該是后端利用模板直接生成的靜態頁面,所以需要解析html,會略微麻煩一些。

編寫代碼

整個編碼的思路變得很清晰了:

1.分頁查詢職位列表
用request模塊發送get請求,獲取json數據,然后按照id查詢html。

2.按職位查詢詳情并入庫
用jsdom模塊對獲取的html進行dom解析,這個模塊很容易上手,可用jquery語法。
將解析的數據過濾,保留崗位職責和要求信息,利用mongoose保存至數據庫。

3.從數據庫中查詢結果
查詢統計各技能占比。結果如開頭截圖所示。

統計結果只代表了某招聘網站對高級前端的技能要求,僅供參考。 程序代碼100多行,具體細節可戳
源碼地址:https://github.com/yalishizhude/spider

總結優化

換個搜索關鍵詞,換個網站都可以使用么?

換個關鍵詞可以,換個網站直接使用肯定不行的,首先用開發者工具找出查詢數據的url,然后json數據直接處理,如果是html再解析,方法相同,只是解析的字段不同。

明明是寫個爬蟲,卻說是職業規劃,不是標題黨么?

爬蟲跟文中所提的手工統計、抽樣查看方法一樣,都是手段,只是更高效一些。文章的重點是利用統計分析的方法來解決“xx與yy,我該如何選擇”這類問題。目標思維很重要,黑貓白貓抓到老鼠就是好貓。

我不用數據庫直接在內存中分析不是更簡單么?

這樣的確能減少代碼量,但是每次分析都需要重新抓取數據,效率太低而且容易被反爬蟲發現,所以 建議還是將查詢結果統計入庫。繪圖,出表格…后續想怎么玩都行~

有沒有更可靠的分析方法?

當然有。文中所提的搜索匹配的分析方式太簡單了,最理想的方式應該是 自動挑選出topN的關鍵詞然后按占比排序。咨詢了一下做大數據的朋友,可以使用 word2vec,有興趣的讀者可以試試。

the end

評論(0)