赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
利用selenium+Xpath对前程无忧网站数据分析岗位的名称、公司、薪资、地址进行爬虫,具体代码如下:
from selenium.webdriver import Chrome from selenium.webdriver.common.keys import Keys import time from selenium.webdriver.chrome.options import Options import pandas as pd from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import By locator=(By.TAG_NAME,'span.jname.at') result={ '岗位名称':[], '公司':[], '薪资':[], '地址':[] } opt=Options() #无头浏览器配置 opt.add_argument("--headless") opt.add_argument("--disable-gpu") opt.add_argument("--disable-blink-features=AutomationControlled") opt.add_argument('User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36') web=Chrome(options=opt) for j in range(51): web.get(f"https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590,2,{j}.html") time.sleep(1) li_list=web.find_elements_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div') for a in li_list: WebDriverWait(web,5).until(EC.presence_of_element_located(locator)) a.find_element_by_tag_name('p.t').click() job_name=a.find_element_by_tag_name('span.jname.at').text company=a.find_element_by_tag_name('a.cname.at').text salary=a.find_element_by_tag_name('span.sal').text location=a.find_element_by_tag_name('span.d.at').text result["岗位名称"].append(job_name) result["公司"].append(company) result["薪资"].append(salary) result["地址"].append(location) df = pd.DataFrame(result) df.to_csv("51job.csv", encoding='gbk',index=False) print("完成!!!!")
import numpy as np import pandas as pd data=pd.read_csv('ohmygod.csv',encoding='gbk') #导入数据 new=data['地址'].str.split('|',expand=True) new_names=['地区','工作经验','学历'] new.columns=new_names d1=data.join(new) def get_salary(sal): salary=0 if sal.endswith('万/月'): sal=sal.replace("万/月","") if "-" in sal: min=sal.split("-")[0] max=sal.split("-")[1] salary=int((float(min)+float(max))/2*10000) if sal.endswith('千/月'): sal=sal.replace("千/月","") if "-" in sal: min=sal.split("-")[0] max=sal.split("-")[1] salary=int((float(min)+float(max))/2*1000) if sal.endswith('万/年'): sal=sal.replace("万/年","") if "-"in sal: min=sal.split("-")[0] max=sal.split("-")[1] salary=int((float(min)+float(max))/2*10000/12) if sal.endswith("元/天"): sal=sal.replace("元/天","") salary=int(sal)*22 return salary d1['薪资s']=d1['薪资'].map(get_salary) #切割字符换算单位 bins=[0,4000,6000,8000,10000,80000] labels=['4千及以下','4-6千','6-8千','8千-1万','1万以上'] d1['薪资区间']=pd.cut(d1['薪资s'],bins=bins,labels=labels) #对薪资进行分箱 a=d1['地区'].str.split('-',expand=True) new_names=['省市','区'] a.columns=new_names d1=d1.join(a) #字符分割提取城市 d1.rename(index=None,columns={'公司':'company','省市':'city','薪资s':'salary'},inplace=True)
首先对全国数据分析岗位地区需求进行了解,如下图:
呈右偏分布,主要集中在北上广深,其次南方沿海城市;
不同学历、不同的工作经验的岗位需求量的占比:
在学历方面,要求是本科生的最多,占比为61.8%;其次是大专,占比为31.8%;在工作经验方面,1-4年经验各占比25%左右,其次是零经验和5-7年经验;
然后了解各城市的平均薪资:
按照平均薪资排名前25的城市的平均薪资均在10k+;
分别观察学历、工作经验与薪资的关系:
学历、工作经验都与薪资呈正相关。学历最高博士的平均月薪为30k+,最低学历中专的平均月薪为5k+;10年以上工作经验的平均月薪为35k+;无经验以及1年工作经验的平均月薪为8k+;
1.若想从事数据分析工作,且接受异地的工作,首选上海、广州、深圳,这些地区数据分析岗位需求量是其他城市的3-5倍;其次是北京、杭州、武汉;
2.大部分工作要求本科、大专学历,对学历并没有十分严格的要求,但是90%岗位要求有相关经验,可见数据分析岗位看重的不是学历,而是经验,要有一定的业务sense,具有较强逻辑思维能力;
3.薪资与地区的需求量并不是呈正比的,但是与学历、工作经验是呈正相关的,学历高、具有工作经验的不一定要在北上广深,也可以在自己熟悉的城市;
4.学历为中专的全国平均月薪为5k+;无工作经验的全国平均月薪为8k+;可以以此作为自己找工作时的薪资参考;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。