浙江11选5最新走势图:我用Python又爬蟲了拉鉤招聘,給你們看看2019市場行情

浙江11选5任3遗漏 www.ehxis.com 本文轉載自公號Python攻城獅,作者:Python攻城獅

數據采集

事情的起源是這樣的,某個風和日麗的下午… 習慣性的打開知乎準備劃下水,看到一個問題剛好邀請回答

于是就萌生了采集下某招聘網站Python崗位招聘的信息,看一下目前的薪水和崗位分布,說干就干。

先說下數據采集過程中遇到的問題,首先請求頭是一定要偽裝的,否則第一步就會給你彈出你的請求太頻繁,請稍后再試,其次網站具有多重反爬策略,解決方案是每次先獲取session然后更新我們的session進行抓取,最后拿到了想要的數據。

Chrome瀏覽器右鍵檢查查看network,找到鏈接https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false 

可以看到返回的數據正是頁面的Python招聘詳情,于是我直接打開發現直接提示{"status":false,"msg":"您操作太頻繁,請稍后再訪問","clientIp":"124.77.161.207","state":2402},機智的我察覺到事情并沒有那么簡單

真正的較量才剛剛開始,我們先來分析下請求的報文,

可以看到請求是以post的方式傳遞的,同時傳遞了參數

datas?=?{????????????'first':?'false',????????????'pn':?x,????????????'kd':?'python',????????}

同時不難發現每次點擊下一頁都會同時發送一條get請求

這里我點了兩次,出現兩條get請求

經過探索,發現這個get請求和我們post請求是一致的,那么問題就簡單許多,整理一下思路

關鍵詞:python 
搜索范圍:全國
數據時效:2019.05.05

#!/usr/bin/env?python3.4#?encoding:?utf-8"""[email protected]:?''@author:?Xusl"""import?jsonimport?requestsimport?xlwtimport?time#?獲取存儲職位信息的json對象,遍歷獲得公司名、福利待遇、工作地點、學歷要求、工作類型、發布時間、職位名稱、薪資、工作年限def?get_json(url,?datas):????my_headers?=?{????????"User-Agent":?"Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_13_6)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/72.0.3626.119?Safari/537.36",????????"Referer":?"https://www.lagou.com/jobs/list_Python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=",????????"Content-Type":?"application/x-www-form-urlencoded;charset?=?UTF-8"????}????time.sleep(5)????ses?=?requests.session()????#?獲取session????ses.headers.update(my_headers)??#?更新????ses.get("https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=")????content?=?ses.post(url=url,?data=datas)????result?=?content.json()????info?=?result['content']['positionResult']['result']????info_list?=?[]????for?job?in?info:????????information?=?[]????????information.append(job['positionId'])??#?崗位對應ID????????information.append(job['city'])??#?崗位對應城市????????information.append(job['companyFullName'])??#?公司全名????????information.append(job['companyLabelList'])??#?福利待遇????????information.append(job['district'])??#?工作地點????????information.append(job['education'])??#?學歷要求????????information.append(job['firstType'])??#?工作類型????????information.append(job['formatCreateTime'])??#?發布時間????????information.append(job['positionName'])??#?職位名稱????????information.append(job['salary'])??#?薪資????????information.append(job['workYear'])??#?工作年限????????info_list.append(information)????????#?將列表對象進行json格式的編碼轉換,其中indent參數設置縮進值為2????????#?print(json.dumps(info_list,?ensure_ascii=False,?indent=2))????#?print(info_list)????return?info_listdef?main():????page?=?int(input('請輸入你要抓取的頁碼總數:'))????#?kd?=?input('請輸入你要抓取的職位關鍵字:')????#?city?=?input('請輸入你要抓取的城市:')????info_result?=?[]????title?=?['崗位id',?'城市',?'公司全名',?'福利待遇',?'工作地點',?'學歷要求',?'工作類型',?'發布時間',?'職位名稱',?'薪資',?'工作年限']????info_result.append(title)????for?x?in?range(1,?page+1):????????url?=?'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'????????datas?=?{????????????'first':?'false',????????????'pn':?x,????????????'kd':?'python',????????}????????try:????????????info?=?get_json(url,?datas)????????????info_result?=?info_result?+?info????????????print("第%s頁正常采集"?%?x)????????except?Exception?as?msg:????????????print("第%s頁出現問題"?%?x)????????????????#?創建workbook,即excel????????workbook?=?xlwt.Workbook(encoding='utf-8')????????#?創建表,第二參數用于確認同一個cell單元是否可以重設值????????worksheet?=?workbook.add_sheet('lagouzp',?cell_overwrite_ok=True)????????for?i,?row?in?enumerate(info_result):????????????#?print(row)????????????for?j,?col?in?enumerate(row):????????????????#?print(col)????????????????worksheet.write(i,?j,?col)????????workbook.save('lagouzp.xls')if?__name__?==?'__main__':????main()
日志記錄

當然存儲于excel當然是不夠的,之前一直用matplotlib做數據可視化,這次換個新東西pyecharts。

了解pyecharts

pyecharts是一款將python與echarts結合的強大的數據可視化工具,包含多種圖表

  • Bar(柱狀圖/條形圖)
  • Bar3D(3D 柱狀圖)
  • Boxplot(箱形圖)
  • EffectScatter(帶有漣漪特效動畫的散點圖)
  • Funnel(漏斗圖)
  • Gauge(儀表盤)
  • Geo(地理坐標系)
  • Graph(關系圖)
  • HeatMap(熱力圖)
  • Kline(K線圖)
  • Line(折線/面積圖)
  • Line3D(3D 折線圖)
  • Liquid(水球圖)
  • Map(地圖)
  • Parallel(平行坐標系)
  • Pie(餅圖)
  • Polar(極坐標系)
  • Radar(雷達圖)
  • Sankey(?;跡?/li>
  • Scatter(散點圖)
  • Scatter3D(3D 散點圖)
  • ThemeRiver(主題河流圖)
  • WordCloud(詞云圖)

用戶自定義

  • Grid 類:并行顯示多張圖
  • Overlap 類:結合不同類型圖表疊加畫在同張圖上
  • Page 類:同一網頁按順序展示多圖
  • Timeline 類:提供時間線輪播多張圖

另外需要注意的是從版本0.3.2 開始,為了縮減項目本身的體積以及維持 pyecharts 項目的輕量化運行,pyecharts 將不再自帶地圖 js 文件。如用戶需要用到地圖圖表(Geo、Map),可自行安裝對應的地圖文件包。

  1. 全球國家地圖: echarts-countries-pypkg (1.9MB): 世界地圖和 213 個國家,包括中國地圖
  2. 中國省級地圖: echarts-china-provinces-pypkg (730KB):23 個省,5 個自治區
  3. 中國市級地圖: echarts-china-cities-pypkg (3.8MB):370 個中國城市

也可以使用命令進行安裝

pip?install?echarts-countries-pypkgpip?install?echarts-china-provinces-pypkgpip?install?echarts-china-cities-pypkg

數據可視化(代碼+展示)

  • 各城市招聘數量
from?pyecharts?import?Barcity_nms_top10?=?['北京',?'上海',?'深圳',?'成都',?'杭州',?'廣州',?'武漢',?'南京',?'蘇州',?'鄭州',?'天津',?'西安',?'東莞',?'珠海',?'合肥',?'廈門',?'寧波',??????????????????'南寧',?'重慶',?'佛山',?'大連',?'哈爾濱',?'長沙',?'福州',?'中山']city_nums_top10?=?[149,?95,?77,?22,?17,?17,?16,?13,?7,?5,?4,?4,?3,?2,?2,?2,?1,?1,?1,?1,?1,?1,?1,?1,?1]bar?=?Bar("Python崗位",?"各城市數量")bar.add("數量",?city_nms,?city_nums,?is_more_utils=True)#?bar.print_echarts_options()?#?該行只為了打印配置項,方便調試時使用bar.render('Python崗位各城市數量.html')??#?生成本地?HTML?文件
  • 地圖分布展示(這個場景意義不大,不過多分析)
from?pyecharts?import?Geocity_datas?=?[('北京',?149),?('上海',?95),?('深圳',?77),?('成都',?22),?('杭州',?17),?('廣州',?17),?('武漢',?16),?('南京',?13),?('蘇州',?7),?????('鄭州',?5),?('天津',?4),?('西安',?4),?('東莞',?3),?('珠海',?2),?('合肥',?2),?('廈門',?2),?('寧波',?1),?('南寧',?1),?('重慶',?1),?????('佛山',?1),?('大連',?1),?('哈爾濱',?1),?('長沙',?1),?('福州',?1),?('中山',?1)]geo?=?Geo("Python崗位城市分布地圖",?"數據來源拉勾",?title_color="#fff",??????????????????title_pos="center",?width=1200,??????????????????height=600,?background_color='#404a59')attr,?value?=?geo.cast(city_datas)geo.add("",?attr,?value,?visual_range=[0,?200],?visual_text_color="#fff",????????????????symbol_size=15,?is_visualmap=True)geo.render("Python崗位城市分布地圖_scatter.html")geo?=?Geo("Python崗位城市分布地圖",?"數據來源拉勾",?title_color="#fff",??????????????????title_pos="center",?width=1200,??????????????????height=600,?background_color='#404a59')????????attr,?value?=?geo.cast(city_datas)????????geo.add("",?attr,?value,?type="heatmap",?visual_range=[0,?10],?visual_text_color="#fff",????????????????symbol_size=15,?is_visualmap=True)????????geo.render("Python崗位城市分布地圖_heatmap.html")
  • 各個城市招聘情況
from?pyecharts?import?Piecity_nms_top10?=?['北京',?'上海',?'深圳',?'成都',?'廣州',?'杭州',?'武漢',?'南京',?'蘇州',?'鄭州']city_nums_top10?=?[149,?95,?77,?22,?17,?17,?16,?13,?7,?5]pie?=?Pie()pie.add("",?city_nms_top10,?city_nums_top10,?is_label_show=True)#?pie.show_config()pie.render('Python崗位各城市分布餅圖.html')

北上深的崗位明顯碾壓其它城市,這也反映出為什么越來越多的it從業人員畢業以后相繼奔赴一線城市,除了一線城市的薪資高于二三線這個因素外,還有一個最重要的原因供需關系,因為一線崗位多,可選擇性也就比較高,反觀二三線的局面,很有可能你跳個幾次槽,發現同行業能呆的公司都待過了…

  • 薪資范圍

由此可見,python的崗位薪資多數在10k~20k,想從事Python行業的可以把工作年限和薪資結合起來參考一下。

  • 學歷要求 + 工作年限

從工作年限來看,1-3年或者3-5年工作經驗的招聘比較多,而應屆生和一年以下的寥寥無幾,對實習生實在不太友好,學歷也普遍要求本科,多數公司都很重視入職人員學歷這點毋容置疑,雖然學歷不代表一切,但是對于一個企業來說,想要短時間內判斷一個人的能力,最快速有效的方法無疑是從學歷入手。學歷第一關,面試第二關。

但是,這不代表學歷不高的人就沒有好的出路,現在的大學生越來越多,找工作也越來越難,競爭越來越激烈,即使具備高學歷,也不能保證你一定可以找到滿意的工作,天道酬勤,特別是it這個行業,知識的迭代,比其他行業來的更頻密。不斷學習,拓展自己學習的廣度和深度,才是最正確的決定。

就業寒冬來臨,我們需要的是理性客觀的看待,而不是盲目地悲觀或樂觀。從以上數據分析,如果愛好Python,仍舊可以入坑,不過要注意一個標簽有工作經驗,就算沒有工作經驗,自己在學習Python的過程中一定要嘗試獨立去做一個完整的項目,爬蟲也好,數據分析也好,亦或者是開發,都要嘗試獨立去做一套系統,在這個過程中培養自己思考和解決問題的能力。持續不斷的學習,才是對自己未來最好的投資,也是度過寒冬最正確的姿勢。

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code