北京建设信源咨询有限公司网站西安最新传染病
2026/4/18 12:27:45 网站建设 项目流程
北京建设信源咨询有限公司网站,西安最新传染病,汽车网站建设代理加盟,做网站需要什么书一、前言在求职或行业调研过程中#xff0c;我们常常需要批量获取招聘平台的岗位信息#xff0c;手动复制粘贴效率极低。本文将通过 DrissionPage 框架实现BOSS 直聘大数据开发岗位的批量爬取#xff0c;无需分析复杂的页面元素#xff0c;直接监听接口数据包获取 JSON 数据…一、前言在求职或行业调研过程中我们常常需要批量获取招聘平台的岗位信息手动复制粘贴效率极低。本文将通过DrissionPage框架实现BOSS 直聘大数据开发岗位的批量爬取无需分析复杂的页面元素直接监听接口数据包获取 JSON 数据最终将结果存入 CSV 文件全程代码简洁易懂新手也能快速上手。本次实战目标监听 BOSS 直聘岗位列表接口获取结构化 JSON 数据提取岗位名称、公司、薪资、学历要求等核心信息将爬取结果批量存入 CSV 文件方便后续数据分析实现自动翻页爬取前 20 页的岗位数据二、环境准备1. 所需 Python 库本次实战核心使用DrissionPage框架集 Selenium 和 Requests 优势于一体支持接口监听、页面操作另外使用 Python 内置的csv模块处理文件pprint用于格式化输出。安装核心库打开终端 / 命令提示符执行以下安装命令pip install DrissionPage2. 环境说明Python 版本3.9 及以上推荐 3.9~3.11操作系统Windows/macOS/Linux 均兼容无需额外配置浏览器DrissionPage会自动适配本地 Chrome 浏览器若未安装 Chrome框架会提示自动下载三、完整实战代码直接复制以下代码运行即可实现爬取无需修改核心内容可根据需求调整岗位关键词和爬取页数。# 导入自动化模块核心页面操作接口监听 from DrissionPage import ChromiumPage # 格式化输出方便调试查看数据结构 from pprint import pprint # 导入csv模块处理CSV文件写入 import csv def crawl_boss_zhipin(): # 1. 初始化CSV文件配置表头和写入对象 with open(boss.csv, modew, encodingutf-8, newline) as f: # 定义CSV文件表头字段 csv_fieldnames [ 岗位名称, 公司, 规模, 公司领域, 学历要求, 经验要求, 技能需求, 福利待遇, 薪资, 市, 区, 商圈, 经度, 纬度 ] # 初始化DictWriter对象用于字典格式数据写入 csv_writer csv.DictWriter(f, fieldnamescsv_fieldnames) # 写入CSV表头 csv_writer.writeheader() # 2. 初始化浏览器对象开启接口监听 dp ChromiumPage() # 监听接口关键词joblist匹配BOSS直聘岗位列表接口 dp.listen.start(joblist) # 访问BOSS直聘大数据开发岗位页面city101280600 对应深圳可修改城市编码 target_url https://www.zhipin.com/web/geek/jobs?query%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%BC%80%E5%8F%91city101280600 dp.get(target_url) # 3. 循环翻页爬取前20页数据 total_pages 20 for page in range(1, total_pages 1): print(f 正在采集第{page}页数据内容 ) try: # 等待接口数据包返回超时时间默认30秒可调整 resp dp.listen.wait() # 获取接口返回的JSON数据 json_data resp.response.body # 4. 提取岗位列表数据解析并写入CSV # 从JSON数据中提取岗位列表核心数据节点 job_list json_data[zpData][jobList] for job in job_list: # 构造单条岗位数据字典 job_info { 岗位名称: job.get(jobName, ), # 使用get方法避免键不存在报错 公司: job.get(brandName, ), 规模: job.get(brandScaleName, ), 公司领域: job.get(brandIndustry, ), 学历要求: job.get(jobDegree, ), 经验要求: job.get(jobExperience, ), 技能需求: job.get(skills, []), 福利待遇: job.get(welfareList, []), 薪资: job.get(salaryDesc, ), 市: job.get(cityName, ), 区: job.get(areaDistrict, ), 商圈: job.get(businessDistrict, ), 经度: job.get(gps, {}).get(longitude, ), # 嵌套字典安全取值 纬度: job.get(gps, {}).get(latitude, ) } # 写入单条岗位数据到CSV csv_writer.writerow(job_info) # 格式化输出当前爬取的岗位信息方便查看进度 pprint(job_info) # 5. 页面下滑到底部触发下一页数据加载核心翻页逻辑 dp.scroll.to_bottom() except Exception as e: print(f第{page}页数据采集失败错误信息{str(e)}) continue # 6. 爬取完成关闭浏览器 dp.quit() print(f 全部{total_pages}页数据采集完成结果已存入boss.csv ) if __name__ __main__: crawl_boss_zhipin()四、核心代码解析1. CSV 文件初始化使用open()函数创建 CSV 文件指定modew写入模式、encodingutf-8防止中文乱码、newline避免 CSV 文件出现空行csv.DictWriter()支持直接写入字典格式数据fieldnames定义 CSV 表头与后续提取的字段一一对应writeheader()写入表头为后续数据写入做准备2. 浏览器初始化与接口监听ChromiumPage()实例化浏览器对象自动启动本地 Chrome 浏览器dp.listen.start(joblist)开启接口监听关键词joblist用于匹配 BOSS 直聘的岗位列表接口无需手动分析完整接口 URL简化开发dp.get()访问目标岗位页面自动加载页面并触发接口请求3. 循环翻页与数据提取循环range(1, 21)实现前 20 页数据爬取可修改total_pages调整爬取页数dp.listen.wait()等待接口数据包返回直到获取到匹配joblist的接口响应超时默认 30 秒json_data resp.response.body直接获取接口返回的 JSON 数据无需手动解析 JSON 字符串DrissionPage已自动处理从json_data[zpData][jobList]提取岗位列表这是接口返回数据的核心节点可通过浏览器 F12 开发者工具分析确认4. 数据安全提取与写入使用job.get(key, 默认值)替代job[key]避免因接口返回数据缺失某个字段导致程序报错终止提高代码健壮性嵌套字典如gps使用job.get(gps, {}).get(longitude, )实现安全取值即使gps字段不存在也不会报错csv_writer.writerow(job_info)将单条岗位字典数据写入 CSV 文件自动对应表头字段5. 翻页逻辑与资源释放dp.scroll.to_bottom()将页面下滑到底部触发 BOSS 直聘的懒加载机制加载下一页岗位数据这是本次实战的核心翻页技巧无需点击分页按钮dp.quit()爬取完成后关闭浏览器释放系统资源五、运行结果展示1. 终端运行日志运行代码后终端会输出每一页的爬取进度以及单条岗位的格式化信息如下所示 正在采集第1页数据内容 {公司: 某科技有限公司, 公司领域: 大数据/人工智能, 商圈: 科技园, 学历要求: 本科, 经度: 113.94xxx, 纬度: 22.54xxx, 经验要求: 3-5年, 福利待遇: [五险一金, 年终奖金, 定期体检], 技能需求: [Hadoop, Spark, Hive], 薪资: 25-35K·13薪, 市: 深圳市, 区: 南山区, 规模: 500-999人, 岗位名称: 大数据开发工程师}2. CSV 文件结果爬取完成后在代码同级目录下会生成boss.csv文件可用 Excel、WPS 或记事本打开数据格式规整无中文乱码如下所示部分截图六、注意事项与优化建议1. 注意事项反爬机制BOSS 直聘有反爬限制请勿频繁运行代码建议爬取间隔适当延长可添加time.sleep(2)避免被封禁 IP城市编码修改目标 URL 中的city101280600对应深圳如需爬取其他城市可在 BOSS 直聘官网切换城市后复制 URL 中的城市编码替换中文乱码问题CSV 文件打开若出现乱码可选择用 Excel 打开选择「数据」→「自文本 / CSV」编码选择「UTF-8」接口关键词验证若无法获取数据可打开浏览器 F12→「网络」→「XHR」查看岗位列表接口的 URL 中是否包含joblist若不包含需修改监听关键词2. 优化建议添加延时控制在翻页逻辑中添加time.sleep(3)避免请求过快触发反爬代码如下import time # 下滑后添加延时 dp.scroll.to_bottom() time.sleep(3)异常数据过滤可添加判断条件过滤掉薪资为空、学历要求为空的无效岗位数据多线程爬取对于大批量数据爬取可结合threading实现多线程爬取提高效率数据去重爬取完成后可对 CSV 文件进行去重处理避免重复岗位数据七、总结本次实战通过DrissionPage框架实现了 BOSS 直聘岗位数据的批量爬取核心亮点是接口监听无需分析复杂的页面 DOM 结构直接获取结构化 JSON 数据相比传统的页面元素解析效率更高、稳定性更强。通过本文的学习你不仅掌握了招聘平台数据爬取的方法还能举一反三将该思路应用到其他支持懒加载的网站数据爬取中。同时csv模块的使用也为后续数据分析打下了基础爬取的boss.csv文件可进一步用pandas进行数据清洗、可视化分析。如果运行过程中遇到问题欢迎在评论区留言讨论喜欢本文的话记得点赞 收藏哦总结本次实战核心依赖DrissionPage框架其接口监听功能可快速获取结构化 JSON 数据简化爬取流程。代码采用csv.DictWriter写入字典数据配合get()方法安全取值提高了代码的健壮性和可维护性。翻页逻辑依赖页面下滑触发懒加载无需手动操作分页按钮适配 BOSS 直聘的页面机制新手易上手。爬取结果存入CSV文件格式规整无乱码可直接用于后续数据分析具备较强的实用性。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询