神級python工程師教你從網(wǎng)站篩選工作需求信息,助你就業(yè)

本文以Python爬蟲他去、數(shù)據(jù)分析毙驯、后端、數(shù)據(jù)挖掘灾测、全棧開發(fā)爆价、運維開發(fā)、高級開發(fā)工程師、大數(shù)據(jù)铭段、機器學習骤宣、架構(gòu)師 這10個崗位,從拉勾網(wǎng)上爬取了相應的職位信息和任職要求序愚,并通過數(shù)據(jù)分析可視化憔披,直觀地展示了這10個職位的平均薪資和學歷、工作經(jīng)驗要求爸吮。

1芬膝、先獲取薪資和學歷、工作經(jīng)驗要求

由于拉勾網(wǎng)數(shù)據(jù)加載是動態(tài)加載的拗胜,需要我們分析蔗候。分析方法如下:

F12分析頁面數(shù)據(jù)存儲位置

我們發(fā)現(xiàn)網(wǎng)頁內(nèi)容是通過post請求得到的,返回數(shù)據(jù)是json格式埂软,那我們直接拿到json數(shù)據(jù)即可锈遥。

我們只需要薪資和學歷、工作經(jīng)驗還有單個招聘信息勘畔,返回json數(shù)據(jù)字典中對應的英文為: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','薪資', '學歷要求', '工作經(jīng)驗']

# 建立DataFrame對象

file_test = pd.DataFrame(columns=name, data=list_info)

# 數(shù)據(jù)寫入

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)

基本數(shù)據(jù)獲取:

# 1. post 請求 url

req_url = '網(wǎng)頁鏈接

# 2.請求頭 headers

headers = {

'Accept': 'application/json,text/javascript,*/*;q=0.01',

'Connection': 'keep-alive',

'Cookie': '你的Cookie值炫七,必須加上去',

'Host': 'www.lagou.com',

'Referer': '網(wǎng)頁鏈接,

'User-Agent': str(UserAgent().random),

}

def get_info(headers):

# 3.for 循環(huán)請求(一共30頁)

for i in range(1, 31):

# 翻頁

data = {

'first': 'true',

'kd': 'Python爬蟲',

'pn': i

}

# 3.1 requests 發(fā)送請求

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 獲取數(shù)據(jù)

req_info = req_result.json()

# 定位到我們所需數(shù)據(jù)位置

req_info = req_info['content']['positionResult']['result']

print(len(req_info))

list_info = []

# 3.3 取出具體數(shù)據(jù)

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)

運行結(jié)果:

2爬立、根據(jù)獲取到的`positionId`來訪問招聘信息詳細頁面

根據(jù)`positionId`還原訪問鏈接:

position_url = []

def read_csv():

# 讀取文件內(nèi)容

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 :

# 根據(jù)positionID補全鏈接

url_single = "網(wǎng)頁鏈接%row[0]

position_url.append(url_single)

i = i + 1

print('一共有:'+str(i-1)+'個')

print(position_url)

訪問招聘信息詳情頁面,獲取職位描述(崗位職責和崗位要求)并清理數(shù)據(jù):

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()')

# 數(shù)據(jù)清理

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)

# 數(shù)據(jù)清理

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("-----------------------------")

運行結(jié)果:

duty

require

3咖气、四種圖可視化數(shù)據(jù)+數(shù)據(jù)清理方式

矩形樹圖:

# 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 --- 解析后變成數(shù)字求中間值: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.工作經(jīng)驗要求柱狀圖可視化

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里的內(nèi)容全部不引用

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({"計數(shù)": numpy.size})

words_stat = words_stat.reset_index().sort_values(by=["計數(shù)"], 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爬蟲崗位

學歷要求

工作月薪

工作經(jīng)驗要求

爬蟲技能

關鍵詞解析:

學歷:本科

工作月薪:10k-30k

工作經(jīng)驗:1-5年

技能:分布式焕参、多線程葛菇、框架痹扇、Scrapy悯舟、算法担租、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫

綜合:爬蟲這個崗位在學歷要求上比較放松抵怎,大多數(shù)為本科即可奋救,比較適合想轉(zhuǎn)業(yè)的老哥小姐姐,學起來也不會特別難反惕。而且薪資待遇上也還算比較優(yōu)厚尝艘,基本在10k以上。不過唯一對工作經(jīng)驗要求還是比較高的姿染,有近一半的企業(yè)要求工作經(jīng)驗要達到3年以上背亥。

python數(shù)據(jù)分析崗位

學歷要求

工作月薪

工作經(jīng)驗要求

數(shù)據(jù)分析技能

關鍵詞解析:

學歷:本科(碩士比例有所增高)

工作月薪:10k-30k

工作經(jīng)驗:1-5年

技能:SAS、SPSS悬赏、Hadoop狡汉、Hive、數(shù)據(jù)庫闽颇、Excel盾戴、統(tǒng)計學、算法

綜合:數(shù)據(jù)分析這個崗位在學歷要求上比爬蟲要求稍微高一些兵多,碩士比例有所提升尖啡,專業(yè)知識上有一定要求。薪資待遇上也還算比較優(yōu)厚剩膘,基本在10k以上衅斩,同時薪資在30k-40k的比例也有所上升。對工作經(jīng)驗要求還是比較高援雇,大部分的企業(yè)要求工作經(jīng)驗要達到3年以上矛渴。

python后端崗位

學歷要求

工作月薪

工作經(jīng)驗要求

后端技能

關鍵詞解析:

學歷:本科

工作月薪:10k-30k

工作經(jīng)驗:3-5年

技能:Flask、Django惫搏、Tornado具温、Linux、MySql筐赔、Redis铣猩、MongoDB、TCP/IP茴丰、數(shù)學(哈哈)

綜合:web后端這個崗位對學歷要求不高达皿,但專業(yè)知識上有很大要求天吓,得會Linux操作系統(tǒng)基本操作、三大主流數(shù)據(jù)庫的使用峦椰、以及三大基本web框架的使用等計算機相關知識龄寞,總體來說難道還是比較大。薪資待遇上也比較優(yōu)厚汤功,基本在10k以上物邑,同時薪資在30k-40k的比例也有近20%。對工作經(jīng)驗要求還是比較高滔金,大部分的企業(yè)要求工作經(jīng)驗要達到3年以上色解。

python數(shù)據(jù)挖掘崗位

學歷要求

工作月薪

工作經(jīng)驗要求

希望小編的文章能幫助你找到心儀的工作,關注小編餐茵。文章持續(xù)推送科阎。

小編準備了一份2018年最新的python零基礎系統(tǒng)學習資料,加群 735934841 免費領确拮濉锣笨!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市道批,隨后出現(xiàn)的幾起案子票唆,更是在濱河造成了極大的恐慌,老刑警劉巖屹徘,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件走趋,死亡現(xiàn)場離奇詭異,居然都是意外死亡噪伊,警方通過查閱死者的電腦和手機簿煌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鉴吹,“玉大人姨伟,你說我怎么就攤上這事《估” “怎么了夺荒?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長良蒸。 經(jīng)常有香客問我技扼,道長,這世上最難降的妖魔是什么嫩痰? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任剿吻,我火速辦了婚禮,結(jié)果婚禮上串纺,老公的妹妹穿的比我還像新娘丽旅。我一直安慰自己椰棘,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布榄笙。 她就那樣靜靜地躺著邪狞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茅撞。 梳的紋絲不亂的頭發(fā)上外恕,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音乡翅,去河邊找鬼。 笑死罪郊,一個胖子當著我的面吹牛蠕蚜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悔橄,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼靶累,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了癣疟?” 一聲冷哼從身側(cè)響起挣柬,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睛挚,沒想到半個月后邪蛔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡扎狱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年侧到,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淤击。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡匠抗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出污抬,到底是詐尸還是另有隱情汞贸,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布印机,位于F島的核電站矢腻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏射赛。R本人自食惡果不足惜踏堡,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咒劲。 院中可真熱鬧顷蟆,春花似錦诫隅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至削樊,卻和暖如春豁生,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漫贞。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工甸箱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迅脐。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓芍殖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谴蔑。 傳聞我的和親對象是個殘疾皇子豌骏,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,332評論 0 10
  • 今天讀到一段話,很有感觸隐锭,分享給大家共勉: 看起來每天熬夜窃躲,卻只是拿著手機點了無數(shù)個贊;看起來起那么早去上課钦睡,卻只...
    成軍413閱讀 146評論 0 0
  • 此刻的你是否仍在外奔波忙碌蒂窒?真是辛苦了! 無意中翻到了這張荞怒,看到你刘绣,朝思暮想的人,沒有想象中的喜悅挣输,卻是萬分的歉意...
    夢一場921閱讀 290評論 0 3
  • 上面來檢查撩嚼,我準備了好久好久停士。但是領導來了,還是發(fā)現(xiàn)了很多缺點和不足完丽。結(jié)果恋技,我憑借著自己所謂的三寸不爛之舌,硬是把...
    奧德賽歲月閱讀 868評論 0 0