首页 > 编程知识 正文

使用Python爬取招聘网站报告

时间:2023-11-20 23:26:53 阅读:287988 作者:HZEK

本文将详细介绍如何使用Python爬取招聘网站数据,并对数据进行分析和报告的生成。

一、网站数据的爬取

在爬取数据之前,我们需要确定需要的数据,并选择一个招聘网站。这里我们以拉勾为例。拉勾的数据格式较为规范,且提供了数据API,可以直接获取JSON格式的数据。

下面是使用Python的编码过程:

import requests
import json
import pandas as pd

url = 'https://www.lagou.com/jobs/positionAjax.json'

headers = {
    'Referer': 'https://www.lagou.com/jobs/list_',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

params = {
    'pn': 1,  
    'kd': 'python'
}

session = requests.Session()
s = session.post(url, headers=headers, params=params)

json_data = json.loads(s.text)

df = pd.json_normalize(json_data['content']['positionResult']['result'])
df.to_csv('lagou_data.csv', index=False)

代码说明:

使用requests库进行会话管理。headers是请求头,params是请求参数(pn为页码,kd为搜索关键字)。拉勾需要发送POST请求,因此使用session.post()方法进行请求,返回的是JSON格式数据。使用json库将JSON格式数据解析为字典类型,并使用pandas的json_normalize方法将数据规范化为DataFrame类型,保存为CSV文件。

二、数据的清洗和处理

爬取下来的数据中可能存在缺失值、重复值、噪声值,因此需要进行数据的清洗与处理。

我们使用Pandas进行数据的清洗和处理,主要涉及以下几个步骤:

1. 删除不需要的列

2. 删除重复值

3. 删除缺失值

4. 对数据进行类型转换

下面是清洗和处理数据的Python代码:

import pandas as pd

df = pd.read_csv('lagou_data.csv')

df.drop(['companyId', 'positionType'], axis=1, inplace=True)
df.drop_duplicates(subset=['positionId'], keep='first', inplace=True)
df.dropna(subset=['salary'], inplace=True)

df['salary'] = df['salary'].apply(lambda x: x.split('-'))
df['salary_min'] = df['salary'].apply(lambda x: int(x[0].replace('k', ''))*1000)
df['salary_max'] = df['salary'].apply(lambda x: int(x[1].replace('k', ''))*1000)

df.to_csv('lagou_clean_data.csv', index=False)

代码说明:

使用Pandas中的read_csv方法读取CSV文件,drop()方法可以删除指定的行和列,inplace=True表示直接在原DataFrame中操作。使用subset参数选择去重的列,keep参数选择删除重复项后保留哪一个(first表示保留第一个)。使用dropna()方法删除包含NaN值的行,对于salary列的清洗,使用split方法将工资拆分为最低工资和最高工资,使用lambda表达式进行类型转换和数值处理,最后将清洗后的数据保存为CSV文件。

三、可视化报告的生成

数据清洗完成后,我们可以对数据进行分析和可视化。这里我们使用Matplotlib和Seaborn库来生成可视化报告。主要涉及以下几个步骤:

1. 数据的分组和统计(如对工资进行分组统计)

2. 使用Seaborn生成各种可视化图表(如饼图、直方图、散点图、热力图)

以下是代码实现:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_csv('lagou_clean_data.csv')

salary_data = df.groupby(['workYear', 'education'])['salary_min', 'salary_max'].mean().reset_index()

plt.figure(figsize=(10, 8))
sns.barplot(x='education', y='salary_min', hue='workYear', data=salary_data)
plt.title('各学历阶段不同年限岗位最低薪资对比')
plt.legend(title='工作年限')
plt.show()

plt.figure(figsize=(10, 8))
sns.scatterplot(x='salary_min', y='salary_max', data=df)
plt.title('最低工资与最高工资散点图')
plt.show()

plt.figure(figsize=(10, 8))
sns.heatmap(df.corr(), annot=True, cmap='YlGnBu')
plt.title('数据相关性分析')
plt.show()

代码说明:

使用groupby()方法对workYear和education两个列进行分组,并统计salary_min和salary_max的平均值。使用reset_index()方法将原DataFrame转换为新的DataFrame。使用Seaborn绘制条形图、散点图、热力图等图表,使用Matplotlib设置图表的标题、图例等参数。

四、总结

本文介绍了使用Python爬取招聘网站数据的方法,并对数据进行清洗和处理,最终生成了可视化报告。Python具有强大的数据分析和处理能力,为数据科学家和分析师提供了便捷的数据工具。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。