Python获取招聘信息是许多求职者和数据分析师常用的技能,通过编写脚本可以高效地从各大招聘平台抓取实时数据,用于分析市场需求、薪资水平或岗位分布等,以下是实现这一目标的详细方法和代码示例。

准备工作
在开始之前,需要安装必要的Python库,包括requests
(用于发送HTTP请求)、BeautifulSoup
(用于解析HTML页面)和pandas
(用于数据处理),可以通过以下命令安装:
pip install requests beautifulsoup4 pandas
获取招聘数据的步骤
确定目标网站
常见的招聘网站包括BOSS直聘、拉勾网、猎聘等,以BOSS直聘为例,其岗位搜索页面的URL结构通常为https://www.zhipin.com/web/geek/job?query={关键词}&city={城市}
,需注意,部分网站可能有反爬机制,需合理设置请求头。
发送HTTP请求
使用requests
库获取网页内容,示例代码如下:
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } url = 'https://www.zhipin.com/web/geek/job?query=python&city=101010100' # 北京的Python岗位 response = requests.get(url, headers=headers) html = response.text
解析HTML页面
通过BeautifulSoup
解析HTML,提取岗位信息(如职位名称、公司、薪资、经验要求等),示例:

from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') job_list = soup.find_all('li', class_='job-card-wrapper') jobs = [] for job in job_list:= job.find('h3').text.strip() company = job.find('h4').text.strip() salary = job.find('span', class_='salary').text.strip() jobs.append([title, company, salary])
数据存储与处理
将提取的数据存入DataFrame并保存为CSV文件:
import pandas as pd df = pd.DataFrame(jobs, columns=['职位名称', '公司名称', '薪资范围']) df.to_csv('python_jobs_beijing.csv', index=False, encoding='utf-8-sig')
进阶技巧
- 分页爬取:通过修改URL中的页码参数(如
page={页码}
)实现多页数据抓取。 - 处理动态加载:若网站数据通过JavaScript动态加载,可使用
Selenium
模拟浏览器操作。 - 反爬应对:设置随机
User-Agent
、添加代理IP、控制请求频率(如time.sleep(2)
)。
数据展示示例
以下为模拟的招聘数据表格:
职位名称 | 公司名称 | 薪资范围 |
---|---|---|
Python开发工程师 | 字节跳动 | 20K-40K·14薪 |
数据分析师(Python) | 腾讯 | 18K-35K |
自动化测试工程师 | 美团 | 15K-28K |
相关问答FAQs
Q1: 如何避免被招聘网站封禁IP?
A1: 可采取以下措施:1)使用代理IP池轮换请求;2)降低请求频率,例如每次请求间隔3-5秒;3)模拟真实浏览器行为,如添加Referer
和Cookie
;4)遵守网站的robots.txt
协议,避免爬取禁止访问的页面。
Q2: 为什么爬取的数据部分为空或格式错误?
A2: 可能原因包括:1)网站更新了HTML结构,导致选择器失效,需检查并调整解析逻辑;2)目标数据通过异步加载,需切换为Selenium
或分析接口请求;3)编码问题,确保保存文件时使用utf-8-sig
格式以兼容中文。
