项目背景
最近在寻找数据分析师的工作,需要了解数据分析师相关岗位的现状,通过招聘网站信息来了解企业的用人要求是最直接也是最简单的途径,这里以Python岗位为例做一个简单的分析报告。
明确分析目的
分析Python岗位近期的招聘情况,包括区域分析、薪资分布、经验要求分布等,了解最新该岗位的招聘情况;利用多元回归建模预测薪资情况。
分析工具
使用Python的Lxml库写爬虫到51job网站爬取数据,分析和可视化均使用Python,主要用到request、lxml、pandas、matplotlib等包。
数据来源
数据来源于51job网站,数据包含字段:'职位’title,'公司名’name,'城市’city,'工资’wage,'发布日期’date,'经验要求’exp,'学历’xueli
数据爬取代码
from urllib import request
from lxml import etree
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import csv
import gevent
from gevent import monkey
monkey.patch_all()
plt.rcParams['font.sans-serif']=['SimHei']
##获取网页
def get_html(url,code):
response = request.urlopen(url)
html = response.read().decode(code)
html = etree.HTML(html)
html = etree.ElementTree(html)
return html
##获取关键字段的信息列表
def get_list(html):
datas = html.xpath('//div[@id="resultList"]/div[@class="el"]')
list = []
for i,data in enumerate(datas):
data = etree.ElementTree(data)
title = data.xpath('/div/p/span/a/@title')[0]
name = data.xpath('/div/span/a/text()')[0]
city = data.xpath('/div/span[2]/text()')[0]
city = city if city else None
wage = data.xpath('/div/span[3]/text()')
wage = wage[0] if wage else None
date = data.xpath('/div/span[4]/text()')[0]
link = data.xpath('/div/p/span/a/@href')[0]
html2 = get_html(link,'gbk')
text = html2.xpath('//p[@class="msg ltype"]/text()')
exp = text[1].strip() if text else None
xueli = text[2].strip() if text else None
head = [title,name,city,wage,date,exp,xueli]
list.append(head)
return list
##把列表信息写入并保存为CSV文件
def write_row(filename,writetype,list):
with open(filename,writetype,newline='') as filename:
writer = csv.writer(filename)
writer.writerows(list)
##写入字段标题名
def write_header(filename,writetype):
with open(filename,writetype,newline='') as filename:
writer