日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用Python分析深圳程序員工資有多高?還真是多金的程序員!

前言

多圖預(yù)警、多圖預(yù)警、多圖預(yù)警。秋招季,畢業(yè)也多,跳槽也多。我們的職業(yè)發(fā)展還是要順應(yīng)市場需求,那么各門編程語言在深圳的需求怎么呢?工資待遇怎么樣呢?zone 在上次寫了這篇文章之后 用Python告訴你深圳房租有多高 ,想繼續(xù)用 Python 分析一下,當前深圳的求職市場怎么樣?順便幫一下秋招的同學(xué)。于是便爬取了某拉鉤招聘數(shù)據(jù)。以下是本次爬蟲的樣本數(shù)據(jù):

樣本

本次統(tǒng)計數(shù)據(jù)量為 4658 ,其中某拉鉤最多能顯示 30 頁數(shù)據(jù),每頁 15 條招聘信息,則總為:

30 x 15 = 450

首頁爬取跳過一頁,則為 435 條,故數(shù)據(jù)基本爬完。其余不夠數(shù)量的語言為該語言在深圳只有這么多條招聘信息。

統(tǒng)計結(jié)果

各語言平均工資

其中

  • 精準推薦
  • 自然語言
  • 機器學(xué)習(xí)
  • Go 語言
  • 圖像識別

獨領(lǐng)風(fēng)騷?。。?!平均工資都挺高的。區(qū)塊鏈炒得挺火的,好像平均薪資并沒有那么高。我統(tǒng)計完之后,感覺自己拖后腿了,ma 的?。?!要刪庫跑路了?。ㄗⅲ合聢D為月薪,單位:K)

各語言平均薪資

平均工資計算方式:

某鉤 item

***值與***值,求平均數(shù),如圖薪資則為:

(10k + 20k)/2 =
15k

***,再總體求平均數(shù)。

公司福利詞云

看福利還是挺豐富的,帶薪休假、下午茶、零食、節(jié)假日。

福利詞云

公司發(fā)展級別排行

總體由 A 輪向 D 輪縮減,大部分公司不需要融資,嗯,估計是拿不到資本融資,但是自家人又有錢的。

公司發(fā)展級別

各語言工作年限要求與學(xué)歷要求

看看你的本命語言的市場需求怎么樣?你達標了嗎?其中三至五年的攻城獅職位挺多的,不怕找不到工作。還有一個趨勢是,薪資越高,學(xué)歷要求越高高。看來學(xué)歷還是挺重要的。

Java

Java 工作年限要求

Java 學(xué)歷要求

Python

Python 工作年限要求

Python 學(xué)歷要求

C 語言

C 語言工作年限要求

C 語言學(xué)歷要求

機器學(xué)習(xí)

機器學(xué)習(xí)工作年限要求

機器學(xué)習(xí)學(xué)歷要求

圖像識別

圖像識別工作年限要求

圖像識別學(xué)歷要求

自然語言

自然語言工作年限要求

自然語言學(xué)歷要求

區(qū)塊鏈

區(qū)塊鏈工作年限要求

區(qū)塊鏈學(xué)歷要求

Go 語言

Go 語言工作年限要求

Go

PHP

PHP 工作年限要求

PHP 學(xué)歷要求

爬蟲技術(shù)分析

  • 請求庫:selenium
  • HTML 解析:BeautifulSoup、xpath
  • 詞云:wordcloud
  • 數(shù)據(jù)可視化:pyecharts
  • 數(shù)據(jù)庫:MongoDB
  • 數(shù)據(jù)庫連接:pymongo

爬蟲代碼實現(xiàn)

看完統(tǒng)計結(jié)果之后,有沒有躍躍欲試?想要自己也實現(xiàn)以下代碼?以下為代碼實現(xiàn)。

對網(wǎng)頁右擊,點擊檢查,找到一條 item 的數(shù)據(jù):

網(wǎng)頁源碼

數(shù)據(jù)庫存儲結(jié)構(gòu):


 
 
 
  1. /* 1 */
  2. {
  3.  "_id" : ObjectId("5b8b89328ffaed60a308bacd"),
  4.  "education" : "本科",# 學(xué)習(xí)要求
  5.  "companySize" : "2000人以上",# 公司人數(shù)規(guī)模
  6.  "name" : "python開發(fā)工程師",# 職位名稱
  7.  "welfare" : "“朝九晚五,公司平臺大,發(fā)展機遇多,六險一金”",# 公司福利
  8.  "salaryMid" : 12.5,# 工資上限與工資下限的平均數(shù)
  9.  "companyType" : "移動互聯(lián)網(wǎng)",# 公司類型
  10.  "salaryMin" : "10",# 工資下限
  11.  "salaryMax" : "15",# 工資上限
  12.  "experience" : "經(jīng)驗3-5年",# 工作年限
  13.  "companyLevel" : "不需要融資",# 公司級別
  14.  "company" : "XXX技術(shù)有限公司"# 公司名稱
  15. }

由于篇幅原因,以下只展示主要代碼:

 
 
 
  1. # 獲取網(wǎng)頁源碼數(shù)據(jù)
  2. # language => 編程語言
  3. # city => 城市
  4. # collectionType => 值:True/False True => 數(shù)據(jù)庫表以編程語言命名 False => 以城市命名
  5. def main(self, language, city, collectionType):
  6.  print(" 當前爬取的語言為 => " + language + " 當前爬取的城市為 => " + city)
  7.  url = self.getUrl(language, city)
  8.  browser = webdriver.Chrome()
  9.  browser.get(url)
  10.  browser.implicitly_wait(10)
  11.  for i in range(30):
  12.  selector = etree.HTML(browser.page_source) # 獲取源碼
  13.  soup = BeautifulSoup(browser.page_source, "html.parser")
  14.  span = soup.find("div", attrs={"class": "pager_container"}).find("span", attrs={"action": "next"})
  15.  print(
  16.  span) # 下一頁
  17.  classArr = span['class']
  18.  print(classArr) # 輸出內(nèi)容為 -> ['pager_next', 'pager_next_disabled']
  19.  attr = list(classArr)[0]
  20.  attr2 = list(classArr)[1]
  21.  if attr2 == "pager_next_disabled":#分析發(fā)現(xiàn) class 屬性為 ['pager_next', 'pager_next_disabled'] 時,【下一頁】按鈕不可點擊
  22.  print("已經(jīng)爬到***一頁,爬蟲結(jié)束")
  23.  break
  24.  else:
  25.  print("還有下一頁,爬蟲繼續(xù)")
  26.  browser.find_element_by_xpath('//*[@id="order"]/li/div[4]/div[2]').click() # 點擊【下一頁】按鈕
  27.  time.sleep(5)
  28.  print('第{}頁抓取完畢'.format(i + 1))
  29.  self.getItemData(selector, language, city, collectionType)# 解析 item 數(shù)據(jù),并存進數(shù)據(jù)庫
  30.  browser.close()

爬蟲分析實現(xiàn)

 
 
 
  1. # 獲取各語言樣本數(shù)量
  2. def getLanguageNum(self):
  3.  analycisList = []
  4.  for index, language in enumerate(self.getLanguage()):
  5.  collection = self.zfdb["z_" + language]
  6.  totalNum = collection.aggregate([{'$group': {'_id': '', 'total_num': {'$sum': 1}}}])
  7.  totalNum2 = list(totalNum)[0]["total_num"]
  8.  analycisList.append(totalNum2)
  9.  return (self.getLanguage(), analycisList)
  10. # 獲取各語言的平均工資
  11. def getLanguageAvgSalary(self):
  12.  analycisList = []
  13.  for index, language in enumerate(self.getLanguage()):
  14.  collection = self.zfdb["z_" + language]
  15.  totalSalary = collection.aggregate([{'$group': {'_id': '', 'total_salary': {'$sum': '$salaryMid'}}}])
  16.  totalNum = collection.aggregate([{'$group': {'_id': '', 'total_num': {'$sum': 1}}}])
  17.  totalNum2 = list(totalNum)[0]["total_num"]
  18.  totalSalary2 = list(totalSalary)[0]["total_salary"]
  19.  analycisList.append(round(totalSalary2 / totalNum2, 2))
  20.  return (self.getLanguage(), analycisList)
  21. # 獲取一門語言的學(xué)歷要求(用于 pyecharts 的詞云)
  22. def getEducation(self, language):
  23.  results = self.zfdb["z_" + language].aggregate([{'$group': {'_id': '$education', 'weight': {'$sum': 1}}}])
  24.  educationList = []
  25.  weightList = []
  26.  for result in results:
  27.  educationList.append(result["_id"])
  28.  weightList.append(result["weight"])
  29.  # print(list(result))
  30.  return (educationList, weightList)
  31. # 獲取一門語言的工作年限要求(用于 pyecharts 的詞云)
  32. def getExperience(self, language):
  33.  results = self.zfdb["z_" + language].aggregate([{'$group': {'_id': '$experience', 'weight': {'$sum': 1}}}])
  34.  totalAvgPriceDirList = []
  35.  for result in results:
  36.  totalAvgPriceDirList.append(
  37.  {"value": result["weight"], "name": result["_id"] + " " + str(result["weight"])})
  38.  return totalAvgPriceDirList
  39. # 獲取 welfare 數(shù)據(jù),用于構(gòu)建福利詞云
  40. def getWelfare(self):
  41.  content = ''
  42.  queryArgs = {}
  43.  projectionFields = {'_id': False, 'welfare': True} # 用字典指定
  44.  for language in self.getLanguage():
  45.  collection = self.zfdb["z_" + language]
  46.  searchRes = collection.find(queryArgs, projection=projectionFields).limit(1000)
  47.  for result in searchRes:
  48.  print(result["welfare"])
  49.  content += result["welfare"]
  50.  return content
  51. # 獲取公司級別排行(用于條形圖)
  52. def getAllCompanyLevel(self):
  53.  levelList = []
  54.  weightList = []
  55.  newWeightList = []
  56.  attrList = ["A輪", "B輪", "C輪", "D輪及以上", "不需要融資", "上市公司"]
  57.  for language in self.getLanguage():
  58.  collection = self.zfdb["z_" + language]
  59.  # searchRes = collection.find(queryArgs, projection=projectionFields).limit(1000)
  60.  results = collection.aggregate([{'$group': {'_id': '$companyLevel', 'weight': {'$sum': 1}}}])
  61.  for result in results:
  62.  levelList.append(result["_id"])
  63.  weightList.append(result["weight"])
  64.  for index, attr in enumerate(attrList):
  65.  newWeight = 0
  66.  for index2, level in enumerate(levelList):
  67.  if attr == level:
  68.  newWeight += weightList[index2]
  69.  newWeightList.append(newWeight)
  70.  return (attrList, newWeightList) 

網(wǎng)頁題目:用Python分析深圳程序員工資有多高?還真是多金的程序員!
本文地址:http://www.dlmjj.cn/article/dppghip.html