成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python開發在北京的就業現狀分析

開發 后端 數據分析
相信各位同學多多少少在拉鉤上投過簡歷,今天突然想了解一下北京Python開發的薪資水平、招聘要求、福利待遇以及公司地理位置。既然要分析那必然是現有數據樣本。本文通過爬蟲和數據分析為大家展示一下北京Python開發的現狀,希望能夠在職業規劃方面幫助到大家!!!

相信各位同學多多少少在拉鉤上投過簡歷,今天突然想了解一下北京Python開發的薪資水平、招聘要求、福利待遇以及公司地理位置。既然要分析那必然是現有數據樣本。本文通過爬蟲和數據分析為大家展示一下北京Python開發的現狀,希望能夠在職業規劃方面幫助到大家!!!

爬蟲

爬蟲的第一步自然是從分析請求和網頁源代碼開始。從網頁源代碼中我們并不能找到發布的招聘信息。但是在請求中我們看到這樣一條POST請求

如下圖我們可以得知

  • url:https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false
  • 請求方式:post
  • result:為發布的招聘信息
  • totalCount:為招聘信息的條數 

Python開發在北京的就業現狀分析

Python開發在北京的就業現狀分析

通過實踐發現除了必須攜帶headers之外,拉勾網對ip訪問頻率也是有限制的。一開始會提示 '訪問過于頻繁',繼續訪問則會將ip拉入黑名單。不過一段時間之后會自動從黑名單中移除。

針對這個策略,我們可以對請求頻率進行限制,這個弊端就是影響爬蟲效率。

其次我們還可以通過代理ip來進行爬蟲。網上可以找到免費的代理ip,但大都不太穩定。付費的價格又不太實惠。

具體就看大家如何選擇了

1思路

通過分析請求我們發現每頁返回15條數據,totalCount又告訴了我們該職位信息的總條數。

向上取整就可以獲取到總頁數。然后將所得數據保存到csv文件中。這樣我們就獲得了數據分析的數據源!

post請求的Form Data傳了三個參數

  • first : 是否首頁(并沒有什么用)
  • pn:頁碼
  • kd:搜索關鍵字

2no bb, show code

  1. # 獲取請求結果 
  2. # kind 搜索關鍵字 
  3. # page 頁碼 默認是1 
  4. def get_json(kind, page=1,): 
  5.     # post請求參數 
  6.     param = { 
  7.         'first''true'
  8.         'pn': page, 
  9.         'kd': kind 
  10.     } 
  11.     header = { 
  12.         'Host''www.lagou.com'
  13.         'Referer''https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
  14.         'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' 
  15.     } 
  16.     # 設置代理 
  17.     proxies = [ 
  18.         {'http''140.143.96.216:80''https''140.143.96.216:80'}, 
  19.         {'http''119.27.177.169:80''https''119.27.177.169:80'}, 
  20.         {'http''221.7.255.168:8080''https''221.7.255.168:8080'
  21.     ] 
  22.     # 請求的url 
  23.     url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false' 
  24.     # 使用代理訪問 
  25.     # response = requests.post(url, headers=header, data=param, proxies=random.choices(proxies)) 
  26.     response = requests.post(url, headers=header, data=param, proxies=proxies) 
  27.     response.encoding = 'utf-8' 
  28.     if response.status_code == 200: 
  29.         response = response.json() 
  30.         # 請求響應中的positionResult 包括查詢總數 以及該頁的招聘信息(公司名、地址、薪資、福利待遇等...) 
  31.         return response['content']['positionResult'
  32.     return None 

接下來我們只需要每次翻頁之后調用 get_json 獲得請求的結果 再遍歷取出需要的招聘信息即可

  1. if __name__ == '__main__'
  2.     # 默認先查詢第一頁的數據 
  3.     kind = 'python' 
  4.     # 請求一次 獲取總條數 
  5.     position_result = get_json(kind=kind) 
  6.     # 總條數 
  7.     total = position_result['totalCount'
  8.     print('{}開發職位,招聘信息總共{}條.....'.format(kind, total)) 
  9.     # 每頁15條 向上取整 算出總頁數 
  10.     page_total = math.ceil(total/15) 
  11.  
  12.     # 所有查詢結果 
  13.     search_job_result = [] 
  14.     #for i in range(1, total + 1) 
  15.     # 為了節約效率 只爬去前100頁的數據 
  16.     for i in range(1, 100): 
  17.         position_result = get_json(kind=kind, page= i) 
  18.         # 每次抓取完成后,暫停一會,防止被服務器拉黑 
  19.         time.sleep(15) 
  20.         # 當前頁的招聘信息 
  21.         page_python_job = [] 
  22.         for j in position_result['result']: 
  23.             python_job = [] 
  24.             # 公司全名 
  25.             python_job.append(j['companyFullName']) 
  26.             # 公司簡稱 
  27.             python_job.append(j['companyShortName']) 
  28.             # 公司規模 
  29.             python_job.append(j['companySize']) 
  30.             # 融資 
  31.             python_job.append(j['financeStage']) 
  32.             # 所屬區域 
  33.             python_job.append(j['district']) 
  34.             # 職稱 
  35.             python_job.append(j['positionName']) 
  36.             # 要求工作年限 
  37.             python_job.append(j['workYear']) 
  38.             # 招聘學歷 
  39.             python_job.append(j['education']) 
  40.             # 薪資范圍 
  41.             python_job.append(j['salary']) 
  42.             # 福利待遇 
  43.             python_job.append(j['positionAdvantage']) 
  44.  
  45.             page_python_job.append(python_job) 
  46.  
  47.         # 放入所有的列表中 
  48.         search_job_result += page_python_job 
  49.         print('第{}頁數據爬取完畢, 目前職位總數:{}'.format(i, len(search_job_result))) 
  50.         # 每次抓取完成后,暫停一會,防止被服務器拉黑 
  51.         time.sleep(15) 

ok! 數據我們已經獲取到了,最后一步我們需要將數據保存下來

  1. # 將總數據轉化為data frame再輸出 
  2.   df = pd.DataFrame(data=search_job_result, 
  3.                     columns=['公司全名''公司簡稱''公司規模''融資階段''區域''職位名稱''工作經驗''學歷要求''工資''職位福利']) 
  4.   df.to_csv('lagou.csv'index=False, encoding='utf-8_sig'

運行main方法直接上結果: 

Python開發在北京的就業現狀分析

數據分析

通過分析cvs文件,為了方便我們統計,我們需要對數據進行清洗

比如剔除實習崗位的招聘、工作年限無要求或者應屆生的當做 0年處理、薪資范圍需要計算出一個大概的值、學歷無要求的當成大專

  1. # 讀取數據   
  2. df = pd.read_csv('lagou.csv', encoding='utf-8'
  3. # 數據清洗,剔除實習崗位   
  4. df.drop(df[df['職位名稱'].str.contains('實習')].index, inplace=True)   
  5. # print(df.describe()) 
  6. # 由于CSV文件內的數據是字符串形式,先用正則表達式將字符串轉化為列表,再取區間的均值   
  7. pattern = 'd+'   
  8. df['work_year'] = df['工作經驗'].str.findall(pattern) 
  9. # 數據處理后的工作年限 
  10. avg_work_year = [] 
  11. # 工作年限 
  12. for i in df['work_year']: 
  13.    # 如果工作經驗為'不限''應屆畢業生',那么匹配值為空,工作年限為0   
  14.    if len(i) == 0:   
  15.        avg_work_year.append(0)   
  16.    # 如果匹配值為一個數值,那么返回該數值   
  17.    elif len(i) == 1:   
  18.        avg_work_year.append(int(''.join(i)))   
  19.    # 如果匹配值為一個區間,那么取平均值   
  20.    else:   
  21.        num_list = [int(j) for j in i]   
  22.        avg_year = sum(num_list)/2   
  23.        avg_work_year.append(avg_year) 
  24. df['工作經驗'] = avg_work_year 
  25.  
  26. # 將字符串轉化為列表,再取區間的前25%,比較貼近現實   
  27. df['salary'] = df['工資'].str.findall(pattern) 
  28. # 月薪 
  29. avg_salary = []   
  30. for k in df['salary']:   
  31.    int_list = [int(n) for n in k]   
  32.    avg_wage = int_list[0]+(int_list[1]-int_list[0])/4   
  33.    avg_salary.append(avg_wage) 
  34. df['月工資'] = avg_salary 
  35.  
  36. # 將學歷不限的職位要求認定為最低學歷:大專 
  37. df['學歷要求'] = df['學歷要求'].replace('不限','大專'

數據通過簡單的清洗之后,下面開始我們的統計

1繪制薪資直方圖

  1. # 繪制頻率直方圖并保存   
  2. plt.hist(df['月工資']) 
  3. plt.xlabel('工資 (千元)')    
  4. plt.ylabel('頻數'
  5. plt.title("工資直方圖")    
  6. plt.savefig('薪資.jpg')   
  7. plt.show()  

 Python開發在北京的就業現狀分析

結論:北京市Python開發的薪資大部分處于15~25k之間

2公司分布餅狀圖

  1. # 繪制餅圖并保存   
  2. count = df['區域'].value_counts() 
  3. plt.pie(count, labels = count.keys(),labeldistance=1.4,autopct='%2.1f%%')   
  4. plt.axis('equal')  # 使餅圖為正圓形   
  5. plt.legend(loc='upper left', bbox_to_anchor=(-0.1, 1))   
  6. plt.savefig('pie_chart.jpg')   
  7. plt.show()   

 Python開發在北京的就業現狀分析

結論:Python開發的公司最多的是海淀區、其次是朝陽區。準備去北京工作的小伙伴大概知道去哪租房了吧

3學歷要求直方圖

  1. # {'本科': 1304, '大專': 94, '碩士': 57, '博士': 1} 
  2. dict = {} 
  3. for i in df['學歷要求']: 
  4.     if i not in dict.keys(): 
  5.         dict[i] = 0 
  6.     else
  7.         dict[i] += 1 
  8. index = list(dict.keys()) 
  9. print(index
  10. num = [] 
  11. for i in  index
  12.     num.append(dict[i]) 
  13. print(num) 
  14. plt.bar(left=index, height=num, width=0.5) 
  15. plt.show() 

 Python開發在北京的就業現狀分析

結論:在Python招聘中,大部分公司要求是本科學歷以上。但是學歷只是個敲門磚,如果努力提升自己的技術,這些都不是事兒

4福利待遇詞云圖

  1. # 繪制詞云,將職位福利中的字符串匯總   
  2. text = ''   
  3. for line in df['職位福利']:   
  4.    text += line   
  5. # 使用jieba模塊將字符串分割為單詞列表 
  6. cut_text = ' '.join(jieba.cut(text)) 
  7. #color_mask = imread('cloud.jpg')  #設置背景圖 
  8. cloud = WordCloud( 
  9.     background_color = 'white'
  10.     # 對中文操作必須指明字體 
  11.     font_path='yahei.ttf'
  12.     #mask = color_mask, 
  13.     max_words = 1000, 
  14.     max_font_size = 100 
  15.     ).generate(cut_text) 
  16.  
  17. # 保存詞云圖片 
  18. cloud.to_file('word_cloud.jpg'
  19. plt.imshow(cloud) 
  20. plt.axis('off'
  21. plt.show() 

 Python開發在北京的就業現狀分析

結論:彈性工作是大部分公司的福利,其次五險一金少數公司也會提供六險一金。團隊氛圍、扁平化管理也是很重要的一方面。

至此,此次分析到此結束。有需要的同學也可以查一下其他崗位或者地區的招聘信息哦~

希望能夠幫助大家定位自己的發展和職業規劃。

責任編輯:未麗燕 來源: 程序員共成長
相關推薦

2009-12-03 10:23:20

北京IT生存現狀

2023-11-08 13:00:00

AI就業人工智能

2020-12-31 14:14:35

大數據大數據應用

2020-04-22 14:27:44

前端工具開發

2009-08-20 10:10:16

敏捷開發支付寶

2019-02-28 10:52:44

Shell運維經驗

2011-10-08 16:17:04

就業

2020-12-04 10:57:15

物聯網科學

2009-04-14 08:46:35

2020-04-11 11:27:56

DevOpsNoOps運維

2020-04-30 14:26:03

物聯網IOT物聯網技術

2017-12-21 11:00:33

2013-03-31 14:10:55

敏捷開發

2015-08-10 11:21:47

在線資源游戲開發

2013-06-21 10:12:04

2020-07-08 07:36:40

物聯網數據技術

2016-01-28 17:51:16

NeutronSDN

2020-06-05 15:25:05

工具代碼瀏覽器

2011-03-09 13:17:27

Web

2013-05-28 09:26:48

私有云部署私有云公有云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩欧美激情 | 久久i| 97国产精品视频人人做人人爱 | 日韩精品av一区二区三区 | 欧美日韩在线免费观看 | 国产a一区二区 | 精品国产精品一区二区夜夜嗨 | 国产精品免费大片 | 99精品视频一区二区三区 | 一区二区激情 | 欧美一区二区三区久久精品视 | 成人性生交大片免费看中文带字幕 | 久久精品国产一区老色匹 | 超碰在线免费公开 | 综合国产| 国产成人免费在线 | 久久青视频 | 中文字幕乱码一区二区三区 | 成年人免费在线视频 | 一区二区三区小视频 | 欧美一级免费 | 日韩一区二区不卡 | 国产精品 亚洲一区 | 久草网站 | 91国在线视频 | 日韩精品一区二 | 99精品视频一区二区三区 | 久久69精品久久久久久久电影好 | 国产精品亚洲精品日韩已方 | 免费看91| 999久久久| 欧美αv| 精品亚洲一区二区三区 | 婷婷福利 | 91久久久久久久久久久 | 成人在线影视 | 999久久久久久久久 国产欧美在线观看 | 91av视频在线免费观看 | 日本天天操| av天天干| 国产精品视频 |