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

數據分析行業薪資的秘密,你想知道的都在這里(1)

大數據 數據分析
數據分析師的收入怎么樣?哪些因素對于數據分析的薪資影響最大?哪些行業對數據分析人才的需求量最高?我想跳槽,應該選擇大公司大平臺還是初創的小公司?按我目前的教育程度,工作經驗,和掌握的工具和技能,能獲得什么樣水平的薪資呢?

[[200047]]

***部分,數據分析職位信息抓取

數據分析師的收入怎么樣?哪些因素對于數據分析的薪資影響***?哪些行業對數據分析人才的需求量***?我想跳槽,應該選擇大公司大平臺還是初創的小公司?按我目前的教育程度,工作經驗,和掌握的工具和技能,能獲得什么樣水平的薪資呢?

我們使用python抓取了2017年6月26日拉鉤網站內搜索“數據分析”關鍵詞下的450條職位信息。通過對這些職位信息的分析和建模來給你答案。

 

[[200048]] 

本系列文章共分為五個部分,分別是數據分析職位信息抓取,數據清洗及預處理,數據分析職位需求分析,數據分析職位薪影響因素分析,以及數據分析職位薪資建模及預測。這是***篇:數據分析職位信息抓取。

數據抓取前的準備工作

首先我們需要獲取職位信息的數據,方法是使用python進行抓取。整個抓取過程分為兩部分,***部分是抓取拉鉤列表頁中包含的職位信息,例如職位名稱,薪資范圍,學歷要求,工作地點等。第二部分是抓取每個職位詳情頁中的任職資格和職位描述信息。然后我們將使用結巴分詞和nltk對職位描述中的文字信息進行處理和信息提取。下面我們開始介紹每一步的操作過程。

首先,導入抓取和數據處理所需的庫文件,這里不再贅述。

  1. #導入抓取所需庫文件 
  2. import requests 
  3. import numpy as np 
  4. import pandas as pd 
  5. import json 
  6. import time 
  7. from bs4 import BeautifulSoup  

然后設置頭部信息和Cookie信息。

  1. #設置頭部信息 
  2. headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'
  3.     'Accept':'text/html;q=0.9,*/*;q=0.8'
  4.     'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
  5.     'Connection':'close'
  6.     'Referer':'https://www.baidu.com/' 
  7.     } 
  8.   
  9. #設置Cookie信息 
  10. cookie={'TrackID':'1_VWwvLYiy1FUr7wSr6HHmHhadG8d1-Qv-TVaw8JwcFG4EksqyLyx1SO7O06_Y_XUCyQMksp3RVb2ezA'
  11.     '__jda':'122270672.1507607632.1423495705.1479785414.1479794553.92'
  12.     '__jdb':'122270672.1.1507607632|92.1479794553'
  13.     '__jdc':'122270672'
  14.     '__jdu':'1507607632'
  15.     '__jdv':'122270672|direct|-|none|-|1478747025001'
  16.     'areaId':'1'
  17.     'cn':'0'
  18.     'ipLoc-djd':'1-72-2799-0'
  19.     'ipLocation':'%u5317%u4EAC'
  20.     'mx':'0_X'
  21.     'rkv':'V0800'
  22.     'user-key':'216123d5-4ed3-47b0-9289-12345'
  23.     'xtest':'4657.553.d9798cdf31c02d86b8b81cc119d94836.b7a782741f667201b54880c925faec4b' 

抓取職位列表信息

設置要抓取的頁面URL,拉鉤的職位信息列表是JS動態加載的,不在所顯示的頁面URL中。所以直接抓取列表頁并不能獲得職位信息。這里我們使用Chrome瀏覽器里的開發者工具進行查找。具體方法是在商品詳情頁點擊鼠標右鍵,選擇檢查,在彈出的開發者工具界面中選擇Network,設置為禁用緩存(Disable cache)和只查看XHR類型的請求。然后刷新頁面。一共有4個請求,選擇包含positionAjax關鍵字的鏈接就是我們要抓取的URL地址。具體過程如下面截圖所示。

 

這里有一個問題,要抓取的URL地址中只有***頁的15個職位信息,并且URL參數中也沒有包含頁碼。而我們要抓取的是全部30多頁的職位列表。如何翻頁呢?后面我們將解決這個問題。

  1. #設置抓取頁面的URL 
  2.  
  3. url='https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'  

職位列表中包含了多個職位相關的信息,我們先建立一些空list用于存儲這些信息。

  1. #創建list用于存儲數據 
  2. positionName=[] 
  3. workYear=[] 
  4. education=[] 
  5. district=[] 
  6. jobNature=[] 
  7. salary=[] 
  8. city=[] 
  9. businessZones=[] 
  10. companyLabelList=[] 
  11. companySize=[] 
  12. financeStage=[] 
  13. industryField=[] 
  14. secondType=[] 
  15. positionId=[]  

開始抓取列表頁中的職位信息,建立一個30頁的循環然后將頁碼作為請求參數與頭部信息和Cookie一起傳給服務器。獲取返回的信息后對頁面內容進行解碼,然后從json數據中提取所需的職位信息,并保存在上一步創建的list中。用于后續的組表。這里的***一個信息是職位id,也就是拉鉤職位詳情頁URL中的一部分。通過這個id我們可以生成與列表頁職位相對應的詳情頁URL。并從中提取任職資格和職位描述信息。

  1. #循環抓取列表頁信息 
  2. for x in range(1,31): 
  3.         #設置查詢關鍵詞及當前頁碼 
  4.         para = {'first''true','pn': x, 'kd'"數據分析"
  5.         #抓取列表頁信息 
  6.         r=requests.get(url=url,headers=headers,cookies=cookie,params=para) 
  7.         #存儲bytes型頁面數據 
  8.         html=r.content 
  9.         #對頁面內容進行解碼 
  10.         html = html.decode() 
  11.         #將json串轉化為dict 
  12.         html_json=json.loads(html) 
  13.         #逐層獲取職位列表信息 
  14.         content=html_json.get('content'
  15.         positionResult=content.get('positionResult'
  16.         result=positionResult.get('result'
  17.         #循環提取職位列表中的關鍵信息 
  18.         for i in result: 
  19.             #獲取職位名稱,工作年限,教育程度,城市及薪資范圍等信息。 
  20.             positionName.append(i.get('positionName')) 
  21.             workYear.append(i.get('workYear')) 
  22.             education.append(i.get('education')) 
  23.             district.append(i.get('district')) 
  24.             jobNature.append(i.get('jobNature')) 
  25.             salary.append(i.get('salary')) 
  26.             city.append(i.get('city')) 
  27.             businessZones.append(i.get('businessZones')) 
  28.             companyLabelList.append(i.get('companyLabelList')) 
  29.             companySize.append(i.get('companySize')) 
  30.             financeStage.append(i.get('financeStage')) 
  31.             industryField.append(i.get('industryField')) 
  32.             secondType.append(i.get('secondType')) 
  33.             #獲取職位的Id編碼。 
  34.             positionId.append(i.get('positionId'))  

設置一個當前的日期字段,用于標記數據獲取的時間。

  1. #設置日期字段 
  2. date=time.strftime('%Y-%m-%d',time.localtime(time.time()))  

將前面抓取到的職位信息,以及當前的日期一起組成Dataframe。便于后續的處理和分析。

  1. #設置DataFrame表格順序 
  2. columns = ['date','positionName',  
  3.   
  4. 'workYear','education','jobNature','businessZones','salary','city','companyLabelList','companySize','financeStage','industryField','d 
  5.   
  6. istrict','secondType','positionId'] 
  7. #將獲取到的字段信息合并為DataFrame 
  8. table=pd.DataFrame({'date':date
  9.                     'positionName':positionName, 
  10.                     'workYear':workYear, 
  11.                     'education':education, 
  12.                     'jobNature':jobNature, 
  13.                     'businessZones':businessZones, 
  14.                     'salary':salary, 
  15.                     'city':city, 
  16.                     'companyLabelList':companyLabelList, 
  17.                     'companySize':companySize, 
  18.                     'financeStage':financeStage, 
  19.                     'industryField':industryField, 
  20.                     'district':district, 
  21.                     'secondType':secondType, 
  22.                     'positionId':positionId}, 
  23.                     columns=columns)  

查看生成的數據表,其中包含了我們在列表頁中抓取的信息,以及下一步要使用的職位id信息。

  1. #查看數據表 
  2.  
  3. table 

 

這里你可以保存一個版本,也可以忽略這一步,繼續后面的職位詳情頁信息抓取。

  1. #存儲數據表 
  2.  
  3. table.to_csv('lagou_' + date + '.csv' 

抓取職位詳情信息(職位描述)

抓取職位詳情頁的信息,首先需要通過拼接生成職位詳情頁的URL。我們預先寫好URL的開始和結束部分,這兩部分是固定的,抓取過程中不會發生變化 ,中間動態填充職位的id。

  1. #設置詳情頁的URL固定部分 
  2.  
  3. url1='https://www.lagou.com/jobs/' 
  4.  
  5. url2='.html'  

創建一個list用于存儲抓取到的職位描述信息。

  1. #創建job_detail用于存儲職位描述 
  2.  
  3. job_detail=[]  

從前面抓取的職位id(positionId)字段循環提取每一個id信息,與URL的另外兩部分組成要抓取的職位詳情頁URL。并從中提取職位描述信息。這里的職位信息不是js動態加載的,因此直接抓取頁面信息保存在之前創建的list中就可以了。

  1. #循環抓取詳情頁的職位描述 
  2. for d in positionId: 
  3.     #更改positionId格式 
  4.     d=str(d) 
  5.     #拼接詳情頁URL 
  6.     url3=(url1 + d + url2) 
  7.     #抓取詳情頁信息 
  8.     r=requests.get(url=url3,headers=headers,cookies=cookie) 
  9.     #存儲bytes型頁面數據yu 
  10.     detail=r.content 
  11.     #創建 beautifulsoup 對象 
  12.     lagou_detail=BeautifulSoup(detail) 
  13.     #提取職位描述信息 
  14.     gwzz=lagou_detail.find_all('dd',attrs={'class':'job_bt'})    
  15.     for j in gwzz: 
  16.         gwzz_text=j.get_text() 
  17.         job_detail.append(gwzz_text)  

查看并檢查一下提取到的職位描述信息。然后將職位描述信息拼接到之前創建的Dataframe中。

  1. #查看職位描述信息 
  2.  
  3. job_detail 

 

 

完整的職位抓取代碼

以下是完整的抓取代碼,步驟和前面介紹的略有不同,***生成一個包含所有職位信息和描述的完整數據表。用于下一步的數據清洗,預處理,分析和建模的工作。

  1. def lagou(p): 
  2.     import requests 
  3.     import numpy as np 
  4.     import pandas as pd 
  5.     import json 
  6.     import time 
  7.     from bs4 import BeautifulSoup 
  8.     import jieba as jb 
  9.     import jieba.analyse 
  10.     headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'
  11.     'Accept':'text/html;q=0.9,*/*;q=0.8'
  12.     'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
  13.     'Connection':'close'
  14.     'Referer':'https://www.jd.com/' 
  15.     } 
  16.     cookie={'TrackID':'1_VWwvLYiy1FUr7wSr6HHmHhadG8d1-Qv-TVaw8JwcFG4EksqyLyx1SO7O06_Y_XUCyQMksp3RVb2ezA'
  17.     '__jda':'122270672.1507607632.1423495705.1479785414.1479794553.92'
  18.     '__jdb':'122270672.1.1507607632|92.1479794553'
  19.     '__jdc':'122270672'
  20.     '__jdu':'1507607632'
  21.     '__jdv':'122270672|direct|-|none|-|1478747025001'
  22.     'areaId':'1'
  23.     'cn':'0'
  24.     'ipLoc-djd':'1-72-2799-0'
  25.     'ipLocation':'%u5317%u4EAC'
  26.     'mx':'0_X'
  27.     'rkv':'V0800'
  28.     'user-key':'216123d5-4ed3-47b0-9289-12345'
  29.     'xtest':'4657.553.d9798cdf31c02d86b8b81cc119d94836.b7a782741f667201b54880c925faec4b'
  30.     url='https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false' 
  31.     positionName=[] 
  32.     workYear=[] 
  33.     education=[] 
  34.     district=[] 
  35.     jobNature=[] 
  36.     salary=[] 
  37.     city=[] 
  38.     businessZones=[] 
  39.     companyLabelList=[] 
  40.     companySize=[] 
  41.     financeStage=[] 
  42.     industryField=[] 
  43.     secondType=[] 
  44.     positionId=[] 
  45.     for x in range(1,31): 
  46.         para = {'first''true','pn': x, 'kd': p} 
  47.         r=requests.get(url=url,headers=headers,cookies=cookie,params=para) 
  48.         html=r.content 
  49.         html = html.decode() 
  50.         html_json=json.loads(html) 
  51.         content=html_json.get('content'
  52.         positionResult=content.get('positionResult'
  53.         result=positionResult.get('result'
  54.         for i in result: 
  55.             positionName.append(i.get('positionName')) 
  56.             workYear.append(i.get('workYear')) 
  57.             education.append(i.get('education')) 
  58.             district.append(i.get('district')) 
  59.             jobNature.append(i.get('jobNature')) 
  60.             salary.append(i.get('salary')) 
  61.             city.append(i.get('city')) 
  62.             businessZones.append(i.get('businessZones')) 
  63.             companyLabelList.append(i.get('companyLabelList')) 
  64.             companySize.append(i.get('companySize')) 
  65.             financeStage.append(i.get('financeStage')) 
  66.             industryField.append(i.get('industryField')) 
  67.             secondType.append(i.get('secondType')) 
  68.             positionId.append(i.get('positionId')) 
  69.     url1='https://www.lagou.com/jobs/' 
  70.     url2='.html' 
  71.     job_detail=[] 
  72.     for d in positionId: 
  73.         d=str(d) 
  74.         url3=(url1 + d + url2) 
  75.         r=requests.get(url=url3,headers=headers,cookies=cookie) 
  76.         detail=r.content 
  77.         lagou_detail=BeautifulSoup(detail) 
  78.         gwzz=lagou_detail.find_all('dd',attrs={'class':'job_bt'})    
  79.         for j in gwzz: 
  80.             gwzz_text=j.get_text() 
  81.             job_detail.append(gwzz_text) 
  82.     date=time.strftime('%Y-%m-%d',time.localtime(time.time())) 
  83.     columns = ['date','positionName''workYear','education','jobNature','businessZones','salary','city','companyLabelList','companySize','financeStage','industryField','district','secondType','positionId','job_detail'
  84.     table=pd.DataFrame({'date':date
  85.                         'positionName':positionName, 
  86.                         'workYear':workYear, 
  87.                         'education':education, 
  88.                         'jobNature':jobNature, 
  89.                         'businessZones':businessZones, 
  90.                         'salary':salary, 
  91.                         'city':city, 
  92.                         'companyLabelList':companyLabelList, 
  93.                         'companySize':companySize, 
  94.                         'financeStage':financeStage, 
  95.                         'industryField':industryField, 
  96.                         'district':district, 
  97.                         'secondType':secondType, 
  98.                         'positionId':positionId, 
  99.                         'job_detail':job_detail}, 
  100.                         columns=columns) 
  101.     table.to_csv('lagou_' + p + date + '.csv'
  102.   
  103. lagou("數據分析"

   

到這里我們已經獲取了拉鉤網的450個數據分析職位信息及職位描述。我們將在后面的文章中對這450個職位信息進行分析和建模。

責任編輯:龐桂玉 來源: 36大數據
相關推薦

2017-08-15 16:05:18

大數據數據分析薪資秘密

2023-09-11 08:51:23

LinkedList雙向鏈表線程

2021-06-17 13:40:47

區塊鏈比特幣公有鏈

2019-11-04 09:07:48

DevOps互聯網IT

2019-04-24 08:31:43

分布式限流kafka

2020-03-18 18:20:19

區塊鏈數字貨幣比特幣

2018-11-28 10:39:01

5G網絡運營商

2021-07-01 09:00:00

安全數字化轉型滲透

2019-04-26 09:38:36

中臺平臺化轉型

2018-03-31 08:45:52

iPhone交通卡iOS 11.3

2021-02-23 09:28:48

大數據數據分析

2022-11-08 15:55:34

鴻蒙開發套件

2017-01-11 08:37:07

Apache SparStreamingDataFrames

2021-07-02 14:09:36

開發技能代碼

2015-10-12 15:50:40

2017-12-13 14:24:08

Google 開發者瀏覽器

2018-05-10 08:50:31

AndroidGoogle 移動系統

2019-10-29 15:28:40

Refs組件前端

2018-08-23 11:58:53

區塊鏈數字貨幣比特幣

2019-12-04 07:57:22

6G5G網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰8 | 精品91久久 | 在线观看av不卡 | 久久久久久成人网 | 国产一级网站 | 麻豆精品久久久 | 在线91| 国产精品久久久久久久久久久久久久 | 欧美日韩不卡合集视频 | 午夜在线精品偷拍 | 亚洲免费视频网址 | 欧美日韩在线播放 | 国产精品成人69xxx免费视频 | 成人乱人乱一区二区三区软件 | 在线免费观看黄视频 | 亚洲精品久久久久久一区二区 | 极品国产视频 | 国产精品久久久久aaaa樱花 | 久久精品亚洲精品国产欧美kt∨ | 超碰97免费在线 | 国产一区h | 日本成人在线观看网站 | 综合九九 | 正在播放国产精品 | 久久婷婷国产麻豆91 | 欧美日韩精品中文字幕 | 国产一区二区 | 国产一级视频在线 | 羞羞色网站 | 成人影院网站ww555久久精品 | 国产精品久久久久一区二区三区 | 久草.com | 欧美成人性生活 | 久久久av | 国内精品一区二区三区 | 亚洲看片网站 | 高清视频一区二区三区 | 国产一区二区三区色淫影院 | 国产99精品 | 成人精品国产免费网站 | 欧产日产国产精品视频 |