python爬取Boss直聘,分析北京招聘市场

简介: 本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。

一、引言

在当前的经济环境下,整体市场发展出现了低迷的趋势,许多求职者面临着找工作困难的局面。尤其是在深圳这样的大城市,竞争异常激烈,求职者需要更加精准地寻找与自己能力相匹配的工作岗位。让自己的能力和需求得到最大化的满足,需要我们了解市场需求和招聘动态,从这场激烈的求职竞争中脱颖而出。

Boss直聘作为一个热门的求职招聘平台,汇聚了大量的招聘信息。

今天我们就一起来看看,如何使用Python爬虫技术获取Boss直聘上的招聘数据,并分析北京地区的招聘市场情况,以帮助求职者更有效地找到适合自己的工作。

二、爬虫目标

我们将从Boss直聘上爬取以下数据,帮助我们了解深圳的招聘市场现状、热门职位以及行业需求。

  • 职位名称
  • 公司名称
  • 工作地点
  • 薪资范围
  • 职位要求

三、环境准备

3.1 编程语言

话不多说,Python简单易用,有丰富的库支持,早就成为数据抓取的程序er必用语言了。

3.2 必要库安装

我们需要安装以下Python库:

  • requests:用于发送HTTP请求,获取网页内容。
  • BeautifulSoup:用于解析HTML文档,提取数据。
  • pandas:用于数据处理和分析。

可以通过以下命令安装所需库:

pip install requests beautifulsoup4 pandas

四、配置代理IP

爬虫需要用代理IP的重要性已经不言而喻了。代理IP通常具有更快的网络连接速度和更低的延迟,有助于提高数据抓取的效率。此外,代理服务器还能缓存请求数据,进一步加速抓取过程。

其次,代理IP在突破访问限制和提高爬虫稳定性方面也发挥着重要作用,其高可用性和稳定性有助于爬虫在网络波动或目标网站不稳定时保持连续运行。因此,使用像青果网络这样的代理IP服务提供商,对于爬虫开发者来说是一个值得考虑的选择。

4.1 注册

首先,我们需要去注册一下青果网络:

然后选择对应需要的产品购买,购买后,在控制台看到有关信息:

4.2 获取代理IP

选择已购买可用的AuthKey值,根据实际需求提取对应的IP,点击【生成链接】获取在线API链接,【打开链接】新窗口打开获取申请成功的IP信息,如下图所示;

4.3 调试工具

勾选要进行提取的业务key,选择接口方法,然后,其他选项IP数量、地区、运营商按需选择,最后点击【测试】按钮即可进行IP提取,申请成功返回结果为如下图所示;

4.4 浏览器测试

您可以把生成的API链接直接在浏览器里打开,查看返回结果。例如,您直接点击如下api链接:

https://proxy.qg.net/query?Key=0B***607

五、数据抓取

5.1 页面分析

访问Boss直聘网站,使用开发者工具(F12)观察网络请求,找到包含招聘信息的页面结构。通常招聘信息以列表的形式呈现,每个职位的信息在一个特定的HTML元素中。

通过BeautifulSoup解析 HTML 数据:

from bs4 import BeautifulSoup
import requests
url = 'https://www.zhipin.com/job_detail/?query=python&city=101010100'
res = requests.get(url, headers=header).text
print(res)
content = BeautifulSoup(res, "html.parser")
ul = content.find_all('ul')
print(ul[12])

5.2 编写爬虫代码

以下是python利用代理IP抓取多个页面,获取北京市招聘岗位信息的部分代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd
# 设置青果网络的代理IP
proxy = {
    "http": "http://username:password@proxy_ip:port",
    "https": "https://username:password@proxy_ip:port"
}
# 目标URL,搜索北京地区的招聘信息
url = 'https://www.zhipin.com/c101010100/'
# 发送请求
response = requests.get(url, proxies=proxy)
response.encoding = 'utf-8'
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 存储职位数据
job_data = []
# 找到招聘信息的容器
jobs = soup.find_all('div', class_='job-list')
def jobs(page):
    for i in range(1, page + 1):
        job_list = []
        try:
            print("正在抓取第 %s 页数据" % i)
            uri = '/c101010100/' % i
            res = requests.get(config.url + uri, headers=header).text
            content = BeautifulSoup(res, "html.parser")
            ul = content.find_all('ul')
            jobs = ul[12].find_all("li")
            for job in jobs:
                job_dict = {}
                job_details_uri = job.find('h3', attrs={'class': 'name'}).find('a')['href']
                job_company = job.find('div', attrs={'class': 'company-text'}).find('h3', attrs={'class': 'name'}).find(
                    'a').text
                job_salary = job.find('h3', attrs={'class': 'name'}).find('span', attrs={'class': 'red'}).text
                job_details = str(job.find('p'))
                job_rege = re.match(rege, job_details)
                job_dict['name'] = job_company
                job_dict['uri'] = job_details_uri
                job_dict['salary'] = job_salary
                try:
                    job_dict['site'] = job_rege.group(1)
                    job_dict['year'] = job_rege.group(2)
                    job_dict['edu'] = job_rege.group(3)
                except:
                    continue
                job_list.append(job_dict)
            print(job_list)
            # save to mongoDB
            try:
                mongo_collection.insert_many(job_list)
            except:
                continue
            time.sleep(1)
        except:
            continue

5.3岗位详情

通过url分析,我们可以知道,所有职位描述都在div标签中:

直接用BeautifulSoup 解析:

def run_main():
    jobs = job_collection.find()
    for job in jobs:
        print('获得工作的uri ', job['uri'])
        get_details(job)
        time.sleep(1)
def get_details(items):
    base_url = config.url
    url = base_url + items['uri']
    company_name = items['name']
    try:
        res = requests.get(url, headers=header).text
        content = BeautifulSoup(res, "html.parser")
        text = content.find('div', attrs={'class': 'text'}).text.strip()
        result = {'name': company_name, 'details': text}
        details_collection.insert_one(result)
    except:
        raise 
if __name__ == '__main__':
    run_main()

5.4 数据清洗

我们获取的数据可能存在重复或缺失的情况,可以使用pandas进行数据清洗:

# 读取数据
df = pd.read_csv('shenzhen_jobs.csv')
# 去除重复项
df.drop_duplicates(inplace=True)
# 处理缺失值
df.fillna('无', inplace=True)
# 数据统计
print(df.describe())

六、数据分析

6.1 分析职位分布

使用pandasmatplotlib库对职位进行分布分析,找出热门职位和薪资水平。

import matplotlib.pyplot as plt
# 职位名称统计
job_counts = df['职位名称'].value_counts().head(10)
# 绘制职位分布图
plt.figure(figsize=(10, 6))
job_counts.plot(kind='bar')
plt.title('北京热门职位分布')
plt.xlabel('职位名称')
plt.ylabel('数量')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

6.2 薪资分析

我们还可以分析不同职位的薪资情况,找出高薪职位。

# 提取薪资范围
df['最低薪资'] = df['薪资范围'].str.extract('(\d+)').astype(float)
df['最高薪资'] = df['薪资范围'].str.extract('(\d+)(?=\s)').astype(float)
# 计算平均薪资
df['平均薪资'] = (df['最低薪资'] + df['最高薪资']) / 2
# 找出薪资最高的职位
high_salary_jobs = df.nlargest(5, '平均薪资')
print("薪资最高的职位:")
print(high_salary_jobs[['职位名称', '平均薪资']])

七、总结

在当前市场环境低迷的背景下,爬取Boss直聘的数据,我们成功分析了深圳地区的招聘市场。了解市场动态和职位需求,可以帮助求职者更有效地找到与自身能力相匹配的工作岗位,同时,也能更好地适应市场变化。

相关文章
|
1月前
|
JSON 缓存 API
深度分析淘宝API接口,用Python脚本实现
本内容深入解析淘宝开放平台 API 的接口设计与 Python 实现,涵盖接口体系、认证机制、签名规则及限流策略,并提供完整的 Python 调用框架,适用于电商系统对接与自动化运营。
|
1月前
|
JSON 算法 API
深度分析小红书城API接口,用Python脚本实现
小红书作为以UGC内容为核心的生活方式平台,其非官方API主要通过移动端抓包解析获得,涵盖内容推荐、搜索、笔记详情、用户信息和互动操作等功能。本文分析了其接口体系、认证机制及请求规范,并提供基于Python的调用框架,涉及签名生成、登录态管理与数据解析。需注意非官方接口存在稳定性与合规风险,使用时应遵守平台协议及法律法规。
|
1月前
|
JSON API 数据安全/隐私保护
深度分析苏宁API接口,用Python脚本实现
苏宁易购开放平台提供覆盖商品、订单、库存、门店等零售全链路的API服务,采用RESTful架构与“AppKey+AppSecret+签名”认证机制,支持线上线下一体化业务处理。本文详解其API特性、认证流程及Python调用实现。
|
1月前
|
自然语言处理 安全 API
深度分析洋码头API接口,用Python脚本实现
洋码头是国内知名跨境电商平台,专注于海外商品直购。本文基于其API的通用设计逻辑,深入解析了认证机制、签名规则及核心接口功能,并提供了Python调用示例,适用于商品与订单管理场景。
|
1月前
|
JSON API 数据格式
深度分析易贝API接口,用Python脚本实现
本文深度解析了eBay开放平台的RESTful API接口体系,涵盖其核心功能、OAuth 2.0认证机制、请求规范及限流策略,并基于Python构建了完整的API调用框架。内容包括商品与订单管理接口的实现逻辑、认证流程、错误处理机制及实战调用示例,适用于跨境电商系统开发与多平台集成。
|
1月前
|
JSON 监控 BI
深度分析亚马逊API接口,用Python脚本实现
本内容深度解析亚马逊SP-API接口体系,涵盖商品、订单、库存等核心功能域,详解LWA认证、AWS签名及Python调用实现,适用于跨境电商系统开发与集成。
|
1月前
|
API Python 数据格式
深度分析京东API接口,用Python脚本实现
深度分析京东API接口,用Python脚本实现
|
1月前
|
JSON API 开发者
深度分析微店API接口,用Python脚本实现
微店作为知名移动端电商平台,其开放平台提供丰富的API接口,支持商品、订单、客户及营销管理。本文分析其API核心特性,并提供Python调用示例,助力开发者快速集成业务功能。
|
1月前
|
JSON API 数据格式
深度分析大麦网API接口,用Python脚本实现
大麦网为国内领先演出票务平台,提供演唱会、话剧、体育赛事等票务服务。本文基于抓包分析其非官方接口,并提供Python调用方案,涵盖演出列表查询、详情获取及城市列表获取。需注意非官方接口存在稳定性风险,使用时应遵守平台规则,控制请求频率,防范封禁与法律风险。适用于个人学习、演出信息监控等场景。
|
30天前
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房

热门文章

最新文章

推荐镜像

更多