摘要:最近在研究區(qū)塊鏈,閑來(lái)無(wú)事抓取了拉勾網(wǎng)上條區(qū)塊鏈相關(guān)的招聘信息。拉勾網(wǎng)的反爬蟲做的還是比較好的,畢竟自己也知道這種做招聘信息聚合的網(wǎng)站很容易被爬,而且比起妹子圖這種網(wǎng)站,開發(fā)的技術(shù)水平應(yīng)該高不少。
最近在研究區(qū)塊鏈,閑來(lái)無(wú)事抓取了拉勾網(wǎng)上450條區(qū)塊鏈相關(guān)的招聘信息。過(guò)程及結(jié)果如下。
拉勾網(wǎng)爬取首先是從拉勾網(wǎng)爬取數(shù)據(jù),用的requests庫(kù)。拉勾網(wǎng)的反爬蟲做的還是比較好的,畢竟自己也知道這種做招聘信息聚合的網(wǎng)站很容易被爬,而且比起妹子圖這種網(wǎng)站,開發(fā)的技術(shù)水平應(yīng)該高不少。
一開始爬取幾個(gè)數(shù)據(jù)后就會(huì)跳轉(zhuǎn)到登陸頁(yè)面,當(dāng)時(shí)采用的應(yīng)對(duì)策略是:當(dāng)跳轉(zhuǎn)到登陸頁(yè)面的時(shí)候,就掛起20s,再重新請(qǐng)求一次,發(fā)現(xiàn)一般掛起一段時(shí)間之后就又可以訪問了。這樣的問題是比較慢,450條信息花了幾十分鐘。
后來(lái),我天真地認(rèn)為:只要登陸了就可以不用掛起等待這么久。于是,添加了模擬登陸地邏輯,主要參考地這篇文章:python -- 拉勾網(wǎng)爬蟲模擬登錄 - CSDN博客。拉勾網(wǎng)對(duì)密碼做了兩次md5加密,并會(huì)下發(fā)動(dòng)態(tài)地Token口令,防止低級(jí)地偽造請(qǐng)求,需要仔細(xì)分析登陸界面加載的JS文件才能成功登陸,拿到Cookie。想起當(dāng)年模擬登陸教務(wù)處,學(xué)號(hào)密碼都是明文傳輸,我直接用F12工具能看到。。。成功拿到Cookie后發(fā)現(xiàn),訪問過(guò)快時(shí)又會(huì)跳轉(zhuǎn)到首頁(yè),并彈出一個(gè)“切換城市”的懸浮窗,更準(zhǔn)確地說(shuō)是我的請(qǐng)求被重定向了。
為什么重定向,因?yàn)楹笈_(tái)能夠通過(guò)訪問頻率很容易發(fā)現(xiàn)我的請(qǐng)求是爬蟲,所以重定向,普通用戶可以點(diǎn)擊取消懸浮窗,由于requests不支持JS運(yùn)行,所以我就GG了,只能像前面那樣掛起一段時(shí)間再請(qǐng)求。這樣一來(lái),模擬登陸就沒有意義了。
針對(duì)這種情況,我認(rèn)為有兩種解決辦法,一種是使用IP池和多線程,不斷變換請(qǐng)求的IP就不會(huì)被發(fā)現(xiàn)了。另外一種就是用無(wú)頭瀏覽器。個(gè)人感覺兩種都是可行的,下次有需求了再實(shí)踐一下。
將爬取的網(wǎng)頁(yè)提取信息,本著可視化原則,用mathplotlib做些圖。其中遇到的主要問題是mathplotlib的中文支持,試了網(wǎng)上很多方法都失敗了,這里要把自己親測(cè)可行的方法記錄下來(lái):
from matplotlib import rcParams import matplotlib.font_manager as fm zhfont = matplotlib.font_manager.FontProperties(fname="../test.ttf") font_list = fm.createFontList(fm.findSystemFonts(["/home/zhaoyu/Project/BlockChainAnalysis/font", ])) fm.fontManager.ttflist.extend(font_list) matplotlib.rcParams["font.family"] = "WenQuanYi Micro Hei"
主要結(jié)果如下:
公司規(guī)模,小公司居多:
城市分布,北上深最多:
發(fā)展階段:
薪資分布:
(感覺這樣表示不是很直觀,自己劃定幾個(gè)區(qū)間,做一個(gè)柱狀圖可能更好)
最后還用jieba和textrank4zh做了關(guān)鍵詞提取,但由于手法粗糙加上噪音嚴(yán)重(產(chǎn)品經(jīng)理、技術(shù)開發(fā)等等的招聘需求應(yīng)該分類處理),效果好像不是很理想:
Building prefix dict from the default dictionary ... Loading model from cache /tmp/jieba.cache Loading model cost 0.854 seconds. Prefix dict has been built succesfully. 關(guān)鍵詞: 技術(shù) 0.010791270870042516 區(qū)塊 0.008745674154277546 相關(guān) 0.00844148459795554 工作 0.008368189087078589 開發(fā) 0.007315529659791802 熟悉 0.006915993478846666 產(chǎn)品 0.0066154024633222315 能力 0.00606941754659388 項(xiàng)目 0.005688665635431383 經(jīng)驗(yàn) 0.005609155675707272 公司 0.005484150951833748 優(yōu)先 0.005273082641983991 團(tuán)隊(duì) 0.004833977171492051 行業(yè) 0.004666562221685026 設(shè)計(jì) 0.004646942513692475 系統(tǒng) 0.004561171667742128 進(jìn)行 0.004504888034867325 研究 0.004431023464429216 業(yè)務(wù) 0.00431705965334352 負(fù)責(zé) 0.004180396829264431發(fā)現(xiàn)的不足
按照之前的計(jì)劃,個(gè)人能力的構(gòu)建應(yīng)該分為兩部分,一部分是工具庫(kù)的積累,一部分是底層原理的掌握。目前來(lái)看,兩方面做的都不是很好。beautifulsoup和mathplotlib都很不熟練,遇到反爬蟲不能快速解決,拿到數(shù)據(jù)也不能很好的可視化出來(lái)。
平時(shí)沒有意識(shí)去建立個(gè)人知識(shí)體系,比如常見的反爬蟲與繞過(guò)方法,數(shù)據(jù)挖掘(拿到了爬取的數(shù)據(jù)該怎么辦),數(shù)據(jù)可視化(怎么直觀地表示數(shù)據(jù))。
寫代碼不能得心應(yīng)手,比如對(duì)容器地某個(gè)操作怎么最優(yōu)雅,自己目前的水平就是遇到問題百度一下,找個(gè)可行地方案就套用上去,離自己理想的狀態(tài)差太遠(yuǎn)了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24050.html
摘要:本程序是抓取知乎的用戶數(shù)據(jù),要能訪問用戶個(gè)人頁(yè)面,需要用戶登錄后的才能訪問。經(jīng)過(guò)查閱資料得知,是因?yàn)橹鯇?duì)圖片做了防盜鏈處理。最終的結(jié)果是,用了一個(gè)周末就抓取了萬(wàn)的用戶數(shù)據(jù)。 代碼托管地址:https://github.com/hoohack/zhihuSpider 這次抓取了110萬(wàn)的用戶數(shù)據(jù),數(shù)據(jù)分析結(jié)果如下:showImg(https://segmentfault.com/img...
摘要:成功爬取了拉鉤網(wǎng)上多個(gè)招聘崗位的具體信息后,數(shù)據(jù)可視化并得出分析結(jié)果如下從整體看,北上廣深杭這五個(gè)城市前端工程師招聘崗位,北京是遙遙領(lǐng)先,是深圳的兩倍,是廣州的三倍,其次到上海,深圳,杭州,廣州居末。 前前言 本文首發(fā)于 github blog 不想看爬蟲過(guò)程只想看職位錢途數(shù)據(jù)分析請(qǐng)看這里:前端招聘崗位分析C++招聘崗位分析JAVA招聘崗位分析PHP招聘崗位分析Python招聘崗位分析...
摘要:覺得好的話,順手分享到朋友圈吧,感謝支持。抓住時(shí)代的趨勢(shì)在上篇文章中,也就是那個(gè)跨維度的打擊,是可以直接秒殺的中,提到這個(gè)時(shí)代的問題,這次針對(duì)語(yǔ)言的前景分析,其實(shí)我也想講一下時(shí)代的問題。目前語(yǔ)言就處于這樣一個(gè)不錯(cuò)的時(shí)代中。 本文為原創(chuàng)文章,轉(zhuǎn)載注明出處,asdfasdfasdf 歡迎掃碼關(guān)注公眾號(hào)flysnow_org或者網(wǎng)站http://www.flysnow.org/,第一時(shí)間看后...
摘要:覺得好的話,順手分享到朋友圈吧,感謝支持。抓住時(shí)代的趨勢(shì)在上篇文章中,也就是那個(gè)跨維度的打擊,是可以直接秒殺的中,提到這個(gè)時(shí)代的問題,這次針對(duì)語(yǔ)言的前景分析,其實(shí)我也想講一下時(shí)代的問題。目前語(yǔ)言就處于這樣一個(gè)不錯(cuò)的時(shí)代中。 本文為原創(chuàng)文章,轉(zhuǎn)載注明出處,asdfasdfasdf 歡迎掃碼關(guān)注公眾號(hào)flysnow_org或者網(wǎng)站http://www.flysnow.org/,第一時(shí)間看后...
摘要:覺得好的話,順手分享到朋友圈吧,感謝支持。抓住時(shí)代的趨勢(shì)在上篇文章中,也就是那個(gè)跨維度的打擊,是可以直接秒殺的中,提到這個(gè)時(shí)代的問題,這次針對(duì)語(yǔ)言的前景分析,其實(shí)我也想講一下時(shí)代的問題。目前語(yǔ)言就處于這樣一個(gè)不錯(cuò)的時(shí)代中。 本文為原創(chuàng)文章,轉(zhuǎn)載注明出處,asdfasdfasdf 歡迎掃碼關(guān)注公眾號(hào)flysnow_org或者網(wǎng)站http://www.flysnow.org/,第一時(shí)間看后...
閱讀 948·2021-09-07 09:58
閱讀 1496·2021-09-07 09:58
閱讀 2892·2021-09-04 16:40
閱讀 2511·2019-08-30 15:55
閱讀 2419·2019-08-30 15:54
閱讀 1376·2019-08-30 15:52
閱讀 441·2019-08-30 10:49
閱讀 2612·2019-08-29 13:21