準(zhǔn)備年后出門(mén)找工作损搬,上招聘網(wǎng)站瀏覽了一下闪唆,發(fā)現(xiàn)瀏覽招聘信息很難得到我想要的信息盅粪,于是就有了這個(gè)項(xiàng)目。
需求
三年時(shí)間自己創(chuàng)業(yè)悄蕾,基本是要用什么就學(xué)票顾,導(dǎo)致現(xiàn)在個(gè)人的技術(shù)棧十分的雜亂础浮,所以我想要知道不同職位(當(dāng)前)的就業(yè)情況和薪資水平。
其次奠骄,具體要去哪個(gè)城市也還沒(méi)有確定豆同,所以想知道城市之間相同職位的薪資水平。
最后是對(duì)于招聘信息要求技術(shù)棧的分析含鳞,希望通過(guò)分析企業(yè)的招聘信息的具體信息影锈,提取關(guān)鍵字,分析出職業(yè)相關(guān)技術(shù)的熱度蝉绷。
使用技術(shù)
也算是抱著學(xué)習(xí)新技能的心態(tài)去寫(xiě)的鸭廷,所以大部分都是本人最近沒(méi)有使用過(guò)的技術(shù)或沒(méi)有學(xué)習(xí)過(guò)的技術(shù):
- 后端 koa(一直在使用 express,egg 也使用過(guò)熔吗,koa 居然直接跳過(guò)了靴姿,補(bǔ)一波)
- 數(shù)據(jù)庫(kù)本來(lái)是使用 mongodb 的,但是發(fā)現(xiàn)其實(shí)沒(méi)有必要使用數(shù)據(jù)庫(kù)磁滚。
- 模板引擎 arttemplate
- 前端就直接導(dǎo)入 Boostrap 和 jQuery,這個(gè)是真的好久不見(jiàn)了宵晚,使用慣了 MVVM 框架垂攘,再寫(xiě) jQuery,憶苦思甜坝偃小晒他!
- 分詞 jieba,這個(gè)最后還是出了點(diǎn)問(wèn)題逸贾,導(dǎo)致第三個(gè)需求沒(méi)法完成了陨仅。
- 還有簡(jiǎn)單的 node 爬蟲(chóng),就是用 superagent+cheerio 實(shí)現(xiàn)了铝侵。
- 圖表 highchart
實(shí)踐過(guò)程
step.1 爬取數(shù)據(jù)
確定需要的信息為:職位名稱灼伤、職位月薪、工作地點(diǎn)咪鲜、詳情鏈接狐赡,f12 查看頁(yè)面結(jié)構(gòu),讀取頁(yè)面后使用 cheerio 獲取需要的信息疟丙。代碼在 getData.js 中颖侄,具體可以參考10 分鐘教你擼一個(gè) nodejs 爬蟲(chóng)系統(tǒng)。
step.2 處理數(shù)據(jù)
分析薪資結(jié)構(gòu)享郊,我直接以 1 萬(wàn)與 1.5 萬(wàn)劃分為上中下三部分览祖,對(duì)于獲取的數(shù)據(jù)做簡(jiǎn)單的判斷統(tǒng)計(jì),就可以了炊琉。展示形式為餅圖展蒂。
step.3 數(shù)據(jù)對(duì)比
可以同時(shí)獲取不同的職位或不同城市的信息,并列顯示,不過(guò)以餅圖顯示玄货,可以看出薪資分布情況但是要比較數(shù)量就很不直觀了皇钞。所以將已查詢到的職位信息數(shù)量放到同一張條形圖中,進(jìn)行對(duì)比松捉。
step.4 關(guān)鍵詞技術(shù)名詞分析(未完成)
原本的思路是使用結(jié)巴分詞夹界,獲取關(guān)鍵詞,結(jié)果發(fā)現(xiàn)招聘詳情的關(guān)鍵詞是‘js’‘前端’‘服務(wù)端’隘世,具體的技術(shù)名詞多只出現(xiàn)一次可柿,是自己想法上出現(xiàn)偏差,把自己關(guān)注的詞當(dāng)做是文本的關(guān)鍵詞了”撸現(xiàn)在應(yīng)該先分析出那些是技術(shù)名詞复斥,然后作為字典去分析權(quán)重。如何分析技術(shù)名詞這個(gè)沒(méi)有思路械媒,最直接的方法應(yīng)該是直接 Google 得到相應(yīng)的字典目锭,但是沒(méi)有找到,這個(gè)功能就暫時(shí)放棄了纷捞,等有了好的方法再完成痢虹。
更多思考
- 關(guān)于數(shù)據(jù)庫(kù):現(xiàn)在每次使用查詢都是先去爬取網(wǎng)頁(yè),這個(gè)的好處是每次都能獲取到最新的數(shù)據(jù)主儡,但是每次都耗費(fèi)了相對(duì)的時(shí)間奖唯,理想的情況應(yīng)該是每次查詢時(shí),查詢預(yù)先獲取的數(shù)據(jù)糜值,這樣查詢就不會(huì)出現(xiàn)時(shí)間過(guò)長(zhǎng)的問(wèn)題丰捷,而服務(wù)器每隔一段時(shí)間爬取最新的數(shù)據(jù),并且刪除之前的數(shù)據(jù)寂汇;不過(guò)這樣就不太可能不限制查詢的職業(yè)與城市病往,數(shù)據(jù)太多但是服務(wù)器的流量有限,這個(gè)功能需要考慮骄瓣。
- 關(guān)于不同招聘網(wǎng)站:不同招聘網(wǎng)站的頁(yè)面結(jié)構(gòu)可能都不一樣荣恐,所以如果要爬取不同網(wǎng)站的信息只能一個(gè)個(gè)去設(shè)置,但是更困難的問(wèn)題是去判斷不同網(wǎng)站相同公司相同職業(yè)的重復(fù)問(wèn)題累贤,假設(shè)相同公司的相同職業(yè)叠穆,公司名相同,職業(yè)名相同臼膏,這就比較好處理硼被。不過(guò)實(shí)際生活中公司應(yīng)該都會(huì)不同網(wǎng)站同時(shí)招聘,所以查詢一個(gè)招聘網(wǎng)站就應(yīng)該足夠了渗磅。
- 關(guān)于技術(shù)名詞:暫時(shí)不知道是否可行嚷硫,需要更多的思考和資料检访。
其他
github:https://github.com/x007xyz/jobs
服務(wù)器:http://95.163.201.100:3000
[圖片上傳失敗...(image-c6fb11-1518845832562)]