pycharm爬取BOSS直聘岗位信息

编译器:Pycharm

效果展示如图

简单原理描述:模拟人工动作爬取页面信息,运行脚本后代码自动打开浏览器获取相关信息,模拟人工进行页面跳转并自动抓取页面信息记录到表格中。

深入原理描述:页面翻转的时候会调用接口,接口中含有数据信息,定义数组存储需要的信息

需要引入的包

from DrissionPage import ChromiumPage
import csv
import time

这边模拟的是抓取浙江-建筑设计相关的岗位信息

如图总共抓取了3000多条岗位信息

代码

from DrissionPage import ChromiumPage
import csv
import time
f = open('浙江建筑设计612.csv', mode='w', encoding='utf-8', newline='')
csv_write = csv.DictWriter(f, fieldnames=[
    '职位', '城市', '公司', '薪资', '经验', '学历', '领域', '标签', '福利'
])
csv_write.writeheader()
driver = ChromiumPage()
driver.listen.start('/wapi/zpgeek/common/data/city/site.json')
driver.get('https://www.zhipin.com/web/geek/job?query=建筑设计&city=101210400')
resp = driver.listen.wait()
time.sleep(2)
json_data = resp.response.body
print(json_data)
time.sleep(2)
areaList = json_data['zpData']['siteList']
for area in areaList:
    if area['name'] == '浙江':
        subLevelModelList = area['subLevelModelList']
        for city in subLevelModelList:
            city_code = city['code']
            city_name = city['name']
            url = f'https://www.zhipin.com/web/geek/job?query=建筑设计&city={city_code}'
            driver.listen.start('/wapi/zpgeek/search/joblist.json')
            time.sleep(2)
            driver.get(url)
            for page in range(10):  # 可根据实际情况修改页数
                time.sleep(1)
                driver.scroll.to_bottom()
                resp = driver.listen.wait()
                json_data = resp.response.body
                if json_data==None:
                    print(str(city_code) + 'fail')
                    break
                jobList = json_data['zpData']['jobList']
                for job in jobList:
                    dit = {
                        '职位': job['jobName'],
                        '城市': job['cityName'],
                        '公司': job['brandName'],
                        '薪资': job['salaryDesc'],
                        '经验': job['jobExperience'],
                        '学历': job['jobDegree'],
                        '领域': job['brandIndustry'],
                        '标签': job['skills'],
                        '福利': job['welfareList'],
                    }
                    csv_write.writerow(dit)
                    print(dit)
                element = driver.ele('css:.ui-icon-arrow-right').parent()
                print(driver.ele('css:.ui-icon-arrow-right').parent().__getattr__('class'))
                if element.__getattr__('class') is not None:
                    if 'disabled' in element.__getattr__('class'):
                        print("上一页按钮被禁用,跳出循环")
                        break
                else:
                    print("元素未找到,正常运行")
                driver.ele('css:.ui-icon-arrow-right').click()
f.close()

代码讲解:

开头定义了个csv文件供数据存储并定义了首行内容

然后打开了浏览器制定页面,获取需要的信息,为了便于其他省份的同学们查找,增强复用性,我这边是先抓取了地址areaList,然后找到对应的省份,你要找别的省份修改省名就好了。在url中设定了岗位。实现抓取某省份-某岗位的信息。

这边是对每个城市模拟了10次翻页记录

考虑了某些岗位可能某城市都没10页,设定了不足10页,比如你到了第八页没下一页了,自动退出循环进行下一个城市的查询~

总体来说操作还是比较简单的,但是如果你没有用过pycharm的话,在环境搭建上你可能会遇到一些问题,这块的话就需要查略其他资料进行解决了~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/700873.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pixi.js学习 (四)鼠标跟随、元素组合与图片位控

目录 一、鼠标移动跟随 1.1 获取鼠标坐标 1.2 鼠标跟随 二、锚点、元素组合 2.1 锚点 2.2 元素组合 三、图片图层 四、实战 例题一:完成合金弹头人物交互 例题二:反恐重击瞄准和弹痕 例题一代码: 例题二代码: 总结 前言 为了提高作…

【会议征稿,五大海内外高校支持】第四届经济发展与商业文化国际学术会议(ICEDBC2024,6月21-23)

第四届经济发展与商业文化国际学术会议(ICEDBC2024)将于2024年6月21-23日在中国大连隆重召开。会议主要围绕“经济发展”“商业文化”等研究领域展开讨论。 旨在为经济,商业的专家学者及企业发展人提供一个分享研究成果、讨论存在的问题与挑战…

调整SinoDB数据库日志模式

在数据库上线后,可能需要变更数据库的日志模式,这可能是由于业务变更或性能调整等原因引起的。数据库日志模式的变更可能涉及单一实例环境或高可用集群环境。本文将介绍如何调整SinoDB数据库的日志模式。 1、 停止应用程序 在修改数据库日志模式之前&am…

Spring 中使用MyBatis

一、Mybatis 的作用 1、MyBatis(前身为iBatis)是一个开源的Java持久层框架,它主要用于与数据库交互,帮助开发者更轻松地进行数据库操作。 持久层:指的是就是数据访问层(dao),是用来操作数据库的。 2、MyB…

【BIM+GIS】Supermap优化BIM模型

文章目录 一、生成缓存二、实例化一、生成缓存 第一步:导出Revit模型 第二步:加载模型 第三步:生成缓存 第四步:添加到场景 二、实例化 实例化技术适用于重复模型较多的情况,可以实现对相同的几何模型只绘制一次,降低了显卡等硬件设备的压力。例如,一幢房屋中存在大量…

C++ day6 练习

#include <iostream>using namespace std;class Animal { private:string name; public:Animal(){}Animal(string name):name(name){}virtual void perform(){cout << "我是" << name <<endl;} };class Lion:public Animal { private:string…

Deploy Kafka for Centos 7

应用介绍 Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写&#xff0c;用于处理消费者在网站中的所有动作流数据。 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据&#xff0c;这些数据…

filezilla-server 1.8.1 设置

filezilla-server 1.8.1 设置&#xff1a; 1. 2. 3. 4. 其他不用配置&#xff0c; 5. 6. 7. 8. 9. 如果外网连不上 filezilla-server 提示无法连接到服务器&#xff0c; 多半是 filezilla-server 所在的电脑没有通过防火墙允许&#xff0c;打开 Windows defender 防…

最短路径Dijkstra算法详解

目录 最短距离问题 最短路径问题 进阶--标尺增多 升级方法 例题应用 最短距离问题 Dijkstra算法的策略&#xff1a; 设置集合S存放已被访问的顶点&#xff0c;然后执行n次下面的两个步骤&#xff08;n为顶点个数&#xff09;&#xff1a; &#xff08;1&#xff09;每次…

c++中string用法详解

目录 二、案例需求 三、案例实现 1.首先获取strData中的角色数量 2.创造结构体数组&#xff0c;定义两个索引值 3.循环遍历对结构体User中的Id和Exp进行赋值 4.对结构体数组userArr进行排序 5.展示结果以及最终代码 ​四、最后 一、前言 在C中&#xff0c;std::string …

webshell三巨头 综合分析(蚁剑,冰蝎,哥斯拉)

考点: 蚁剑,冰蝎,哥斯拉流量解密 存在3个shell 过滤器 http.request.full_uri contains "shell1.php" or http.response_for.uri contains "shell1.php" POST请求存在明文传输 ant 一般蚁剑执行命令 用垃圾字符在最开头填充 去掉垃圾字符直到可以正常bas…

STM32MP135裸机编程:配置RCC,修改主频到1GHz

0 工具准备 STM32CubeMX v6.11.1 STM32CubeIDE v1.15 STM32CubeProgrammer v2.16.0 STM32MP13xx参考手册 STM32MP13勘误手册 STM32MP135AD数据手册 正点原子stm32MP135开发板 1 确认时钟源 本例使用的时钟源均由外部晶振提供&#xff0c;分别是24MHz的HSE、32.768KHz的LSE。原…

服务器制作RAID磁盘阵列并管理

1. 规划节点 主机规划 IP主机名节点192.168.100.10localhost控制节点 2. 基础准备 使用VMWare Workstation软件安装CentOS 7.2操作系统&#xff0c;镜像使用提供的 CentOS-7-x86_64-DVD-1511.iso&#xff0c;并添加4块20 GB硬盘。YUM源使用提供的 mdadm_yum文件夹。 1. 创…

R可视化:ggpubr包学习

欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者 Xiao hong书&#xff1a;生信学习者 知hu&#xff1a;生信学习者 CDSN&#xff1a;生信学习者2 介绍 ggpubr是我经常会用到的R包&#xff0c;它傻瓜式的画图方式对很多初次接触R绘图的人来…

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码&#xff0c;喜欢的朋友可以下载研究 一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码

什么是自适应滤波器?

一、自适应滤波器 自适应滤波器是一种能够自动调整其滤波参数以匹配输入信号特性变化的滤波器&#xff0c;主要用于信号处理中选择性地通过特定频率范围内的信号&#xff0c;同时抑制其他频率成分。自适应滤波器主要有几种&#xff1a; LMS (Least Mean Squares) 自适应滤波器…

pytest+requests+allure自动化测试接入Jenkins学习

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 最近在这整理知识&#xff0c;发现在pytest的知识文档缺少系统性&#xff0c;这里整理一下&…

react 搭建简单的后台管理系统

1.分析后台组成 后台基本组成是由菜单、头部、内容区域组成 2 后台具体实现 2.1 整体页面布局 页面整体布局为侧边栏(CommonAside)、头部(CommonHeader)、标签区域(CommonTag)、内容区域(Content)四部分组成&#xff0c;展开和收起功能是把展开和收起的状态&#xff0c;用一个…

Unity基础(三)3D场景搭建

目录 简介: 一.下载新手资源 二.创建基本地形 三.添加场景细节 四,添加水 五,其他 六. 总结 简介: 在 Unity 中进行 3D 场景搭建是创建富有立体感和真实感的虚拟环境的关键步骤。 首先&#xff0c;需要导入各种 3D 模型资源&#xff0c;如建筑物、角色、道具等。这些模…

Java——IO流(一)-(3/8):File案例练习-文件遍历,文件搜索,删除非空文件夹,啤酒问题(需求分析、问题解决、运行结果)

目录 文件遍历&#xff08;遍历所有文件及文件夹&#xff09; 需求分析 问题解决 运行结果 文件搜索 需求分析 问题解决 运行结果 删除非空文件夹 啤酒问题&#xff08;递归案例&#xff09; 文件遍历&#xff08;遍历所有文件及文件夹&#xff09; 需求分析 需求&am…