您现在的位置是:首页 > 编程 > 

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

2025-07-28 21:46:09
python爬取Boss直聘,分析北京招聘市场 一、引言在当前的经济环境下,整体市场发展出现了低迷的趋势,许多求职者面临着工作困难的局面。尤其是在深圳这样的大城市,竞争异常激烈,求职者需要更加精准地寻与自己能力相匹配的工作岗位。让自己的能力和需求得到最大化的满足,需要我们了解市场需求和招聘动态,从这场激烈的求职竞争中脱颖而出。Boss直聘作为一个热门的求职招聘平台,汇聚了大量的招聘信息。今天我

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

一、引言

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

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

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

二、爬虫目标

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

  • 职位名称
  • 公司名称
  • 工作地点
  • 薪资范围
  • 职位要求
三、环境准备

.1 编程语言

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

.2 必要库安装

我们需要安装以下Python库:

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

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

代码语言:javascript代码运行次数:0运行复制
pip install requests beautifulsoup4 pandas
四、配置代理IP

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

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

五、数据抓取

5.1 页面分析

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

通过BeautifulSoup解析 HTML 数据:

代码语言:python代码运行次数:0运行复制
from bs4 import BeautifulSoup
import requests
url = '/?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抓取多个页面,获取北京市招聘岗位信息的部分代码:

代码语言:python代码运行次数:0运行复制
import requests
from bs4 import BeautifulSoup
import pandas as pd


"获取青果网络短效代理IP"
proxy_url = "; 

# 目标URL,搜索北京地区的招聘信息
url = '/'

# 发送请求
respe = requests.get(url, proxies=proxy)
 = 'utf-8'

# 解析HTML
soup = BeautifulSoup(, '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('h', attrs={'class': 'name'}).find('a')['href']
                job_company = job.find('div', attrs={'class': 'company-text'}).find('h', attrs={'class': 'name'}).find(
                    'a').text
                job_salary = job.find('h', attrs={'class': 'name'}).find('span', attrs={'class': 'red'}).text
                job_details = str(job.find('p'))
                job_rege = (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()
                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.岗位详情

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

直接用BeautifulSoup 解析:

代码语言:python代码运行次数:0运行复制
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进行数据清洗:

代码语言:python代码运行次数:0运行复制
# 读取数据
df = pd.read_csv('shenzhen_')
# 去除重复项
df.drop_duplicates(inplace=True)
# 处理缺失值
df.fillna('无', inplace=True)
# 数据统计
print(df.describe())
六、数据分析

6.1 分析职位分布

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

代码语言:python代码运行次数:0运行复制
import matplotlib.pyplot as plt
# 职位名称统计
job_counts = df['职位名称'].value_counts().head(10)
# 绘制职位分布图
plt.figure(figsize=(10, 6))
job_counts.plot(kind='bar')
('北京热门职位分布')
plt.xlabel('职位名称')
plt.ylabel('数量')
plt.xticks(rotation=45)
_layout()
plt.show()

6.2 薪资分析

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

代码语言:python代码运行次数:0运行复制
# 提取薪资范围
df['最低薪资'] = df['薪资范围'].('(\d+)').astype(float)
df['最高薪资'] = df['薪资范围'].('(\d+)(?=\s)').astype(float)
# 计算平均薪资
df['平均薪资'] = (df['最低薪资'] + df['最高薪资']) / 2
# 出薪资最高的职位
high_salary_jobs = (5, '平均薪资')
print("薪资最高的职位:")
print(high_salary_jobs[['职位名称', '平均薪资']])
七、总结

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

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1172060.html

相关标签:无
上传时间: 2025-07-21 09:59:57
留言与评论(共有 15 条评论)
本站网友 天伦不孕不育
3分钟前 发表
attrs={'class'
本站网友 依云曦城
18分钟前 发表
搜索北京地区的招聘信息 url = '/' # 发送请求 respe = requests.get(url
本站网友 金基尚书里
26分钟前 发表
6)) job_counts.plot(kind='bar') ('北京热门职位分布') plt.xlabel('职位名称') plt.ylabel('数量') plt.xticks(rotation=45) _layout() plt.show()6.2 薪资分析我们还可以分析不同职位的薪资情况
本站网友 百度教育
30分钟前 发表
配置代理IP爬虫需要用代理IP的重要性已经不言而喻了
本站网友 深圳鹏城医院
11分钟前 发表
数据抓取5.1 页面分析访问Boss直聘网站
本站网友 智障儿童现状
7分钟前 发表
以帮助求职者更有效地到适合自己的工作
本站网友 it招聘
11分钟前 发表
continue5.岗位详情通过url分析
本站网友 天猫销售排行榜
24分钟前 发表
"html.parser") ul = content.find_all('ul') jobs = ul[12].find_all("li") for job in jobs
本站网友 计算器计算
26分钟前 发表
本站网友 怎么看网速
21分钟前 发表
其高可用性和稳定性有助于爬虫在网络波动或目标网站不稳定时保持连续运行
本站网友 刘翔简介
19分钟前 发表
从这场激烈的求职竞争中脱颖而出
本站网友 郁南县中医院
1分钟前 发表
提取数据
本站网友 罗死了吗
2分钟前 发表
尤其是在深圳这样的大城市
本站网友 扩大范围
22分钟前 发表
配置代理IP爬虫需要用代理IP的重要性已经不言而喻了