摘要:在分析網絡時代爬蟲技術的基礎上,介紹了基于python語言爬蟲技術的基本情況及其特性,并列舉了利用python語言編寫爬蟲程序對前程無憂網的IT類求職數據行了爬取,對爬取的數據進行了統(tǒng)計分析, 得出相關結論。
關鍵詞:Python;Scrapy;爬蟲技術;數據分析;就業(yè)推薦
1.引言
隨著大數據時代的發(fā)展,網絡上有價值信息的讀取和解析漸漸成為成功挖掘數據的基礎性工作。面對互聯網上各種格式的網頁和網頁開發(fā)者不同的設計思路,網絡爬蟲技術在近年來獲得了人們越來越多的關注和研究,爬蟲技術的發(fā)展驅動了現代的大數據網絡時代。爬蟲技術是一把利用網絡上龐大的數據資源的利器,通過構造爬蟲,不僅可以連接數據和解析數據,還可以將這些數據進行分析并將分析結果利用圖表進行展示。爬蟲可以實現網頁之間的連接,構建整個網站的地圖映射。除此之外,爬蟲不會遺漏擴展的鏈接,會繼續(xù)對其進行跟蹤。
中國IT產業(yè)在過去5年的時間里,經歷了28%的年增長速度,比同期的國家GDP增長速度的3倍,IT產業(yè)占全國工業(yè)比重達到12.3%,占GDP的9.1%,成為第一大產業(yè)。伴隨著行業(yè)的發(fā)展,IT人才的短缺現象將會越來越嚴重。據估計,目前中國市場對IT人才的需求每年超過50萬人。而國內目前的IT教育主要是高等學校計算機、電子、電信、信息技術等相關專業(yè)的學歷教育,每年培養(yǎng)的大學畢業(yè)生約為5萬,遠遠不能滿足市場的需求。
前程無憂網作為國內最大的招聘網站之一,所擁有的信息極其龐大,令人眼花繚亂、無從選擇。在大數據的時代下,Python語言充分的展示出了它的優(yōu)勢,在科學計算、文件處理、數據分析等領域越來越凸顯其價值。使用Python對前程無憂網IT類招聘信息中的薪資數據、職位信息、工作經驗等信息的搜集,利用Scrapy抓取這些招聘信息并用Pandas對數據進行清理,通過對這些數據的分析,可以為IT類求職者推薦求職崗位和就業(yè)城市,讓IT類求職者對選擇求職崗位和就業(yè)城市有一個大致的判斷。
2.求職網站面臨的問題
2.1招聘信息魚龍混雜
求職者打開招聘網站會發(fā)現,求職信息太多以至于不知道如何取舍。比如選擇IT類的職位,應該選擇哪個崗位呢?是JAVA開發(fā)工程師,亦或是前端開發(fā)工程師?選擇崗位無非最關心的就是薪資待遇,不僅僅是目前的薪資待遇,還有在未來幾年薪資的上升空間。這些東西是招聘網站所不能直接體現的。
2.2崗位需求量
當求職者尋找工作時,往往會關心自己在這份工作中到底具有多少競爭力,拋開求職者本身的能力,競爭力的另一個體現就是這份工作到底需要多少人,需要的人越多,競爭就越小,就越容易找到工作。就招聘網站而言需要數據為求職者提供選擇工作的依據
2.3各城市的同一崗位的比較性
對于求職者來說,除了薪資的增長起伏和競爭力,還有一個重要的因素,那就是求職者希望的工作城市,雖然網絡上總是有報道說這個城市收入水平達到多少,物價達到多少。但是,求職者不僅僅關心收入水平,也希望知道自己選擇的崗位更應該去哪個城市工作。
3 解決方案
3.1 解決思路
獲取到前程無憂網IT類的招聘信息后,針對IT類畢業(yè)生遇到的求職信息獲取等問題,提供以下解決思路:
(1)薪資增長情況:將獲取到的招聘信息以城市和崗位為條件分組,計算每一組在不同工作經驗的最低薪資和最高薪資的平均水平。
(2)崗位需求量:將獲取到的招聘信息以城市和崗位為條件分組,計算每一組的崗位需求人數總和。
(3)同一崗位在不同城市的比較性:將獲取到的招聘信息以城市和崗位為條件分組,然后計算一個比較性的期望值,這個比較性的期望值通過公式“1/工作經驗年限對應的數值*平均工資*需求人數(滿足工資高,需求人數多,工作經驗低,推薦指數越高的原則)”計算而得。
3.2 數據獲取
本文通過基于Python的Scrapy框架編寫爬蟲,編寫爬蟲前先去前程無憂網站分析頁面的url請求序列,方便整理出編寫爬蟲邏輯。然后根據頁面信息和研究目的設計數據庫字段。再根據數據庫字段,配置item、根據頁面請求到的數據配置Field()進行數據存入前處理。接著根據url請求的序列設計不同的回調函數,并發(fā)起不同的請求獲取返回item。然后創(chuàng)建Proxy、UserAgent下載器實現動態(tài)瀏覽器頭、隨機代理ip,失敗后更換ip繼續(xù)請求,提高爬蟲的存活率和數據采集完整性。最后使用線程池獲取數據庫連接并保存數據到mysql數據庫。以下時獲取數據的關鍵代碼:
allowed_domains = ['51job.com']
start_urls=[‘https://search.51job.com/list/030800%252C230300%252C230200%252C070300%252C250200,000000,0000,01%252C37%252C38%252C40%252C32,9,99,%2520,2,1.html']
def parse(self, response):
post_urls=response.css("#resultList .el .t1").xpath('.//a/@href').extract()
for post_url in post_urls:
yield Request(url=parse.urljoin(response.url,post_url),callback=self.parse_detail)
next_url = response.css(".dw_page ul li:last-child a::attr(href)").extract_first('')
if next_url:
yield Request(url=parse.urljoin(response.url, next_url), callback=self.parse)
def parse_detail(self, response):
item_loader = TempDataItemLoader(item=TempDataItem(), response=response)
url = response.url
salary_id = re.match(r'.*/(\d*).html', url, re.I)
item_loader.add_value('salary_id', salary_id.group(1))
3.3 數據處理
當數據獲取成功后,就需要把這些數據形成直觀的的圖表了,這里使用了Echarts.js插件。Echarts.js這個開源可視化庫提供的一系列圖表,為此爬蟲的數據展示提供了良好的支持。首先使用Django的ORM查詢數據庫中的數據,這里只對就業(yè)推薦功能做以下說明:
當使用Django查詢出數據后發(fā)現,Django的ORM對復雜查詢與計算的支持并不好,于是采用了Pandas庫。
# 將數據庫查出的數據轉換為Pandas的數據格式
df = pandas.DataFrame(list(salary_data))
# 使用pandas提供的函數對數據進行清洗,將將復雜數據替換成數字。
df = df.replace({'1年經驗': '1', '2年經驗': '2', '3-4年經驗': '3', '5-7年經驗': '4', '8-9年經驗': '5', '10年以上經驗': '6'})
# 將數據以城市分組
grouped = df.groupby('city__name')
#遍歷每一個城市下,求出平均薪資和平均需求人數
for city__name, group in grouped:
experience_value = 0
for experience, s in group.groupby('experience'):
# mean()函數用來計算平均數(計算平均薪資 和平均需求人數)
s = s.mean()
# 就業(yè)推薦指數
experience_value += round(1 / int(experience), 6) *int(s['avg_salary']) * int(s['people_count'])
3.4 處理結果
首頁會每過5秒就隨機更換一個城市各IT職位的需求人數以及某城市某一職位不同工作經驗的薪資增長情況,如圖1所示。
薪資起伏頁面,展示的是搜索某一城市的某一職位,如蘇州的python職位就會呈現這個職位的不同工作經驗的薪資增長情況,如圖2所示。
需求人數頁面,展示了搜索某一職位呈現這個職位在不同城市的需求人數以及平均最高薪資和平均最低薪資,如圖3所示。
推薦就業(yè)頁面展示的是搜索某一職位會出現這一職位在不同城市的推薦指數。這個指數根據公式:1/工作經驗年限對應的數值*平均工資*需求人數(滿足工資高,需求人數多,工作經驗低,推薦指數越高的原則),如圖4所示。
4 結語
在大數據時代,數據分析往往能得到一些事物的規(guī)律,在大數據的分析結果下,人們往往能依據其中的某些規(guī)律,為自己的選擇提供一定的參考。通過爬取前程無憂招聘網站的數據,分析出IT類行業(yè)的不同職位的一個招聘狀況,在一定程度上有效為IT類應屆畢業(yè)生的就業(yè)選擇提供了直觀的數據參考,幫助IT類應屆畢業(yè)生選擇自己的工作城市和職位。
參考文獻:
[1]王全勝.Python在校園數據分析中的應用--以一卡通消費為例[J].電腦知識與技術,2017(3)1-2.
[2]涂小琴.基于Python爬蟲的電影評論情感傾向性分析[J].研究與開發(fā),2017(12)52-54.
[3]魏冬梅,何忠秀,唐建梅.基于Python的Web信息獲取方法研究[J].軟件導刊,2018(1)41-43.
[4]陳智,梁娟.基于Python的微博發(fā)表意向預測研究[J].智能處理與應用.2018(4)56-59.
[5]熊暢.基于Python爬蟲技術的網頁數據抓取與分析研究[J].數字技術與應用.2017(2)12-14.
[6]趙麗娜.基于Python爬蟲的借閱數據獲取[J].北華航天工業(yè)學院學報.2018(8)61-62.
作者簡介:席一(1979~),男,山東聊城人,重慶第二師范學院數學與信息工程學院,講師,碩士。
基金項目:重慶第二師范學院首批輔導員工作精品項目:“三源整合,六室聯動”,探索“互聯網+”形勢下高校創(chuàng)新創(chuàng)業(yè)教育模式(項目編號201604);2018年重慶市教育委員會人文社會科學研究項目:思想政治教育角度下的大學生創(chuàng)新創(chuàng)業(yè)教育研究(項目編號18SKSZ042)。