之前做過一陣子數(shù)據(jù)爬取的相關(guān)工作坟募,現(xiàn)有一個基于Scrapy的智聯(lián)招聘爬蟲demo分享,以供初學(xué)者學(xué)習(xí)之用。
demo鏈接:https://github.com/xander-ye/recruit_data
下面簡單的介紹下
這里有三個主要的文件夾纹因,分別是:
- Database(數(shù)據(jù)庫文件)
- RecruitSpider(爬蟲程序)
- Datamining(數(shù)據(jù)分析統(tǒng)計)
其實爬蟲分兩種盔腔,一種是通用爬蟲程序杠茬,就像搜索引擎一樣月褥,什么都爬,爬取的網(wǎng)站也沒有固定格式瓢喉,基本上也不限制域名宁赤;另外一種就是針對特定的網(wǎng)站,比如這里的智聯(lián)招聘栓票,它的數(shù)據(jù)具有規(guī)范的格式决左。
關(guān)于數(shù)據(jù)庫
爬取特定網(wǎng)站的程序,我一般的流程是先打開要爬取的網(wǎng)站走贪,收集需要爬取的內(nèi)容佛猛,關(guān)鍵字,據(jù)此建立數(shù)據(jù)庫坠狡。
這里我使用的mysqlWorkbench來生成數(shù)據(jù)庫文件
mysqlWorkbench下載
具體步驟:
打開mysqlWorkbench : File>New Model > Add Diagram
點擊新table按鈕新建一個表继找,如下圖:
雙擊表便可在下方添加字段。
創(chuàng)建好之后長這樣:
導(dǎo)出數(shù)據(jù)庫文件:
然后就是用這個文件去刷一下mysql就好了逃沿。
數(shù)據(jù)庫環(huán)節(jié)完成婴渡。
爬蟲程序
網(wǎng)上Scrapy也比較多,中英文的都有凯亮,這里貼一個中文的:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html
簡潔的梳理下爬取的流程:
在RecruitSpider>spiders>zhilian.py中start_requests方法開始缩搅,到parse_job_detail,此時數(shù)據(jù)item拋給了pipelines.py,在拋給pipelines.py 之前呢触幼,item自身有個對數(shù)據(jù)處理的過程硼瓣,這個過程便是在items.py中完成。
在pipelines.py中完成最終數(shù)據(jù)插入數(shù)據(jù)庫操作置谦。
涉及到的去重參見具體代碼吧堂鲤。
補充:
- 爬蟲部署可采用scrapyd
- 與scrapyd配套的有scrapyd-client,封裝了scrapyd的API媒峡,使得提交爬蟲瘟栖,調(diào)度爬蟲,停止爬蟲方便了許多
- Gerapy是一個管理爬蟲的web界面谅阿,也是基于scrapyd
數(shù)據(jù)分析環(huán)節(jié)
去年年終的時候猛然間發(fā)現(xiàn)很多公眾號發(fā)布了各種領(lǐng)域半哟,各個方面的很多統(tǒng)計報告。這就是一個數(shù)據(jù)分析的結(jié)果∏┎停現(xiàn)在我們數(shù)據(jù)庫里面有了幾十上百萬的招聘數(shù)據(jù)寓涨,我們就可以從各個方面來進(jìn)行分析,比如各個城市平均薪資氯檐,各個城市薪資標(biāo)準(zhǔn)差戒良,各行業(yè)招聘數(shù)量,工資與學(xué)歷關(guān)系冠摄,與工作年限關(guān)系糯崎,以及具體到某行業(yè)不同崗位薪資區(qū)別几缭,等等。這些數(shù)據(jù)能夠幫助我們了解一個行業(yè)是否興旺發(fā)達(dá)沃呢,你當(dāng)前的工資水平在整個同行業(yè)同崗位來看處于一個什么樣的水平年栓,當(dāng)前最火熱的崗位技術(shù)是那些;這些信息了解的越多對于找工作的同學(xué)越有利薄霜,對于準(zhǔn)備換行的同學(xué)也是有一個極大的參考價值某抓。
具體分析用到了pandas,可視化使用的是matplotlib黄锤,它們具體的教程各位也自行去搜索吧搪缨。
推薦下 jupyter notebook,這個工具在數(shù)據(jù)分析的時候超級方便鸵熟。
這里象征性的分析了兩三個數(shù)據(jù)副编,貼在下面: