1. 程式人生 > >神級python工程師教你從網站篩選工作需求資訊,助你就業

神級python工程師教你從網站篩選工作需求資訊,助你就業

本文以Python爬蟲、資料分析、後端、資料探勘、全棧開發、運維開發、高階開發工程師、大資料、機器學習、架構師 這10個崗位,從拉勾網上爬取了相應的職位資訊和任職要求,並通過資料分析視覺化,直觀地展示了這10個職位的平均薪資和學歷、工作經驗要求。

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

1、先獲取薪資和學歷、工作經驗要求

由於拉勾網資料載入是動態載入的,需要我們分析。分析方法如下:

F12分析頁面資料儲存位置

我們發現網頁內容是通過post請求得到的,返回資料是json格式,那我們直接拿到json資料即可。

我們只需要薪資和學歷、工作經驗還有單個招聘資訊,返回json資料字典中對應的英文為:positionId,salary, education, workYear(positionId為單個招聘資訊詳情頁面編號)。相關操作程式碼如下:

  • 檔案儲存:

 

def file_do(list_info):
 # 獲取檔案大小
 file_size = os.path.getsize(r'G:lagou_anv.csv')
 if file_size == 0:
 # 表頭
 name = ['ID','薪資', '學歷要求', '工作經驗']
 # 建立DataFrame物件
 file_test = pd.DataFrame(columns=name, data=list_info)
 # 資料寫入
 file_test.to_csv(r'G:lagou_anv.csv', encoding='gbk', index=False)
 else:
 with open(r'G:lagou_anv.csv', 'a+', newline='') as file_test:
 # 追加到檔案後面
 writer = csv.writer(file_test)
 # 寫入檔案
 writer.writerows(list_info)
  • 基本資料獲取:

 

# 1. post 請求 url
req_url = '網頁連結
# 2.請求頭 headers
headers = {
 'Accept': 'application/json,text/javascript,*/*;q=0.01',
 'Connection': 'keep-alive',
 'Cookie': '你的Cookie值,必須加上去',
 'Host': 'www.lagou.com',
 'Referer': '網頁連結,
 'User-Agent': str(UserAgent().random),
}
def get_info(headers):
 # 3.for 迴圈請求(一共30頁)
 for i in range(1, 31):
 # 翻頁
 data = {
 'first': 'true',
 'kd': 'Python爬蟲',
 'pn': i
 }
 # 3.1 requests 傳送請求
 req_result = requests.post(req_url, data=data, headers=headers)
 req_result.encoding = 'utf-8'
 print("第%d頁:"%i+str(req_result.status_code))
 # 3.2 獲取資料
 req_info = req_result.json()
 # 定位到我們所需資料位置
 req_info = req_info['content']['positionResult']['result']
 print(len(req_info))
 list_info = []
 # 3.3 取出具體資料
 for j in range(0, len(req_info)):
 salary = req_info[j]['salary']
 education = req_info[j]['education']
 workYear = req_info[j]['workYear']
 positionId = req_info[j]['positionId']
 list_one = [positionId,salary, education, workYear]
 list_info.append(list_one)
 print(list_info)
 # 儲存檔案
 file_do(list_info)
 time.sleep(1.5)
  • 執行結果:

 

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

2、根據獲取到的`positionId`來訪問招聘資訊詳細頁面

  • 根據`positionId`還原訪問連結:

 

position_url = []
def read_csv():
 # 讀取檔案內容
 with open(r'G:lagou_anv.csv', 'r', newline='') as file_test:
 # 讀檔案
 reader = csv.reader(file_test)
 i = 0
 for row in reader:
 if i != 0 :
 # 根據positionID補全連結
 url_single = "網頁連結%row[0]
 position_url.append(url_single)
 i = i + 1
 print('一共有:'+str(i-1)+'個')
 print(position_url)
  • 訪問招聘資訊詳情頁面,獲取職位描述(崗位職責和崗位要求)並清理資料:

 

def get_info():
 for position_url in position_urls:
 work_duty = ''
 work_requirement = ''
 response00 = get_response(position_url,headers = headers)
 time.sleep(1)
 content = response00.xpath('//*[@id="job_detail"]/dd[2]/div/p/text()')
 # 資料清理
 j = 0
 for i in range(len(content)):
 content[i] = content[i].replace(' ',' ')
 if content[i][0].isdigit():
 if j == 0:
 content[i] = content[i][2:].replace('、',' ')
 content[i] = re.sub('[;;.0-9。]','', content[i])
 work_duty = work_duty+content[i]+ '/'
 j = j + 1
 elif content[i][0] == '1' and not content[i][1].isdigit():
 break
 else:
 content[i] = content[i][2:].replace('、', ' ')
 content[i] = re.sub('[、;;.0-9。]','',content[i])
 work_duty = work_duty + content[i]+ '/'
 m = i
 # 崗位職責
 write_file(work_duty)
 print(work_duty)
 # 資料清理
 j = 0
 for i in range(m,len(content)):
 content[i] = content[i].replace(' ',' ')
 if content[i][0].isdigit():
 if j == 0:
 content[i] = content[i][2:].replace('、', ' ')
 content[i] = re.sub('[、;;.0-9。]', '', content[i])
 work_requirement = work_requirement + content[i] + '/'
 j = j + 1
 elif content[i][0] == '1' and not content[i][1].isdigit():
 # 控制範圍
 break
 else:
 content[i] = content[i][2:].replace('、', ' ')
 content[i] = re.sub('[、;;.0-9。]', '', content[i])
 work_requirement = work_requirement + content[i] + '/'
 # 崗位要求
 write_file2(work_requirement)
 print(work_requirement)
 print("-----------------------------")
  • 執行結果:

 

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

duty

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

require

3、四種圖視覺化資料+資料清理方式

  • 矩形樹圖:

 

# 1.矩形樹圖視覺化學歷要求
from pyecharts import TreeMap
education_table = {}
for x in education:
 education_table[x] = education.count(x)
key = []
values = []
for k,v in education_table.items():
 key.append(k)
 values.append(v)
data = []
for i in range(len(key)) :
 dict_01 = {"value": 40, "name": "我是A"}
 dict_01["value"] = values[i]
 dict_01["name"] = key[i]
 data.append(dict_01)
tree_map = TreeMap("矩形樹圖", width=1200, height=600)
tree_map.add("學歷要求",data, is_label_show=True, label_pos='inside')
  • 玫瑰餅圖:

 

# 2.玫瑰餅圖視覺化薪資
import re
import math
'''
# 薪水分類
parameter : str_01--字串原格式:20k-30k
returned value : (a0+b0)/2 --- 解析後變成數字求中間值:25.0
'''
def assort_salary(str_01):
 reg_str01 = "(d+)"
 res_01 = re.findall(reg_str01, str_01)
 if len(res_01) == 2:
 a0 = int(res_01[0])
 b0 = int(res_01[1])
 else :
 a0 = int(res_01[0])
 b0 = int(res_01[0])
 return (a0+b0)/2
from pyecharts import Pie
salary_table = {}
for x in salary:
 salary_table[x] = salary.count(x)
key = ['5k以下','5k-10k','10k-20k','20k-30k','30k-40k','40k以上']
a0,b0,c0,d0,e0,f0=[0,0,0,0,0,0]
for k,v in salary_table.items():
 ave_salary = math.ceil(assort_salary(k))
 print(ave_salary)
 if ave_salary < 5:
 a0 = a0 + v
 elif ave_salary in range(5,10):
 b0 = b0 +v
 elif ave_salary in range(10,20):
 c0 = c0 +v
 elif ave_salary in range(20,30):
 d0 = d0 +v
 elif ave_salary in range(30,40):
 e0 = e0 +v
 else :
 f0 = f0 + v
values = [a0,b0,c0,d0,e0,f0]
pie = Pie("薪資玫瑰圖", title_pos='center', width=900)
pie.add("salary",key,values,center=[40, 50],is_random=True,radius=[30, 75],rosetype="area",is_legend_show=False,is_label_show=True)
  • 普通柱狀圖:

 

# 3.工作經驗要求柱狀圖視覺化
from pyecharts import Bar
workYear_table = {}
for x in workYear:
 workYear_table[x] = workYear.count(x)
key = []
values = []
for k,v in workYear_table.items():
 key.append(k)
 values.append(v)
bar = Bar("柱狀圖")
bar.add("workYear", key, values, is_stack=True,center= (40,60))
  • 詞雲圖:

 

import jieba
from pyecharts import WordCloud
import pandas as pd
import re,numpy
stopwords_path = 'H:PyCodingLagou_analysisstopwords.txt'
def read_txt():
 with open("G:lagouContentywkf_requirement.txt",encoding='gbk') as file:
 text = file.read()
 content = text
 # 去除所有評論裡多餘的字元
 content = re.sub('[,,。. 
]', '', content)
 segment = jieba.lcut(content)
 words_df = pd.DataFrame({'segment': segment})
 # quoting=3 表示stopwords.txt裡的內容全部不引用
 stopwords = pd.read_csv(stopwords_path, index_col=False,quoting=3, sep="	", names=['stopword'], encoding='utf-8')
 words_df = words_df[~words_df.segment.isin(stopwords.stopword)]
 words_stat = words_df.groupby(by=['segment'])['segment'].agg({"計數": numpy.size})
 words_stat = words_stat.reset_index().sort_values(by=["計數"], ascending=False)
 test = words_stat.head(200).values
 codes = [test[i][0] for i in range(0, len(test))]
 counts = [test[i][1] for i in range(0, len(test))]
 wordcloud = WordCloud(width=1300, height=620)
 wordcloud.add("必須技能", codes, counts, word_size_range=[20, 100])
 wordcloud.render("H:PyCodingLagou_analysiscloud_pitywkf_bxjn.html")

 

python爬蟲崗位

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

學歷要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作月薪

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作經驗要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

爬蟲技能

關鍵詞解析:

  • 學歷:本科
  • 工作月薪:10k-30k
  • 工作經驗:1-5年
  • 技能:分散式、多執行緒、框架、Scrapy、演算法、資料結構、資料庫

綜合:爬蟲這個崗位在學歷要求上比較放鬆,大多數為本科即可,比較適合想轉業的老哥小姐姐,學起來也不會特別難。而且薪資待遇上也還算比較優厚,基本在10k以上。不過唯一對工作經驗要求還是比較高的,有近一半的企業要求工作經驗要達到3年以上。

python資料分析崗位

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

學歷要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作月薪

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作經驗要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

資料分析技能

關鍵詞解析:

  • 學歷:本科(碩士比例有所增高)
  • 工作月薪:10k-30k
  • 工作經驗:1-5年
  • 技能:SAS、SPSS、Hadoop、Hive、資料庫、Excel、統計學、演算法

綜合:資料分析這個崗位在學歷要求上比爬蟲要求稍微高一些,碩士比例有所提升,專業知識上有一定要求。薪資待遇上也還算比較優厚,基本在10k以上,同時薪資在30k-40k的比例也有所上升。對工作經驗要求還是比較高,大部分的企業要求工作經驗要達到3年以上。

python後端崗位

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

學歷要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作月薪

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作經驗要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

後端技能

關鍵詞解析:

  • 學歷:本科
  • 工作月薪:10k-30k
  • 工作經驗:3-5年
  • 技能:Flask、Django、Tornado、Linux、MySql、Redis、MongoDB、TCP/IP、數學(哈哈)

綜合:web後端這個崗位對學歷要求不高,但專業知識上有很大要求,得會Linux作業系統基本操作、三大主流資料庫的使用、以及三大基本web框架的使用等計算機相關知識,總體來說難道還是比較大。薪資待遇上也比較優厚,基本在10k以上,同時薪資在30k-40k的比例也有近20%。對工作經驗要求還是比較高,大部分的企業要求工作經驗要達到3年以上。

python資料探勘崗位

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

學歷要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作月薪

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

 

工作經驗要求

 

神級python工程師教你從網站篩選工作需求資訊,助你就業

 

希望小編的文章能幫助你找到心儀的工作,關注小編。文章持續推送。