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.bodyif json_data==None:print(str(city_code) + 'fail')breakjobList = 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("上一页按钮被禁用,跳出循环")breakelse:print("元素未找到,正常运行")driver.ele('css:.ui-icon-arrow-right').click()
f.close()

代码讲解:

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用人工智能写2024年高考作文

目录 用人工智能写2024年高考作文 引用 一、2024年 新课标I卷 作文真题 AI写作范文 二、2024年 全国甲卷 作文真题 AI写作范文 三、2024年 新课标II卷 作文真题 AI写作范文 四、2024年 北京卷 作文真题一 AI写作范文 作文真题二 AI写作范文 作文真题三 AI写作…

MySQL是怎么保证持久性的(redo log日志相关)

Mysql中 事务的很多实现,都是因为有日志的支撑,比如binlog、undo log、redo log等 MySQL是怎么保证持久性的 持久性是指,事务一旦提交,它对数据库的改变就应该是永久性的,接下来的其他操作或故障不能对其有影响。In…

Linux/Windows 安装 RocketMQ 详细图文教程!

Linux 安装 RocketMQ 首先,你需要从RocketMQ的官方网站或GitHub仓库下载最新的RocketMQ发行版下载安装,官网下载地址:https://rocketmq.apache.org/download/。 接下来配置环境变量: 输入vim /etc/profile命令配置环境变量输入i进…

【动态规划】| 路径问题之不同路径 力扣62

🎗️ 主页:小夜时雨 🎗️ 专栏:动态规划 🎗️ 如何活着,是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/unique-paths/description/ 通常动态规划的题目有…

牛客little w and Discretization

玩一下样例发现,只要找到mex就可以知道有((1-mex)的值)所在的位置离散化后和原本的值是一样的,所以询问区间的长度-(1-mex)有几个值就是答案,数据范围3e5,莫队值域分块求区间mex,计算1-mex有几个位置属于这…

51单片机-实机演示(LED点阵)

目录 前言: 一.线位置 二.扩展 三.总结 前言: 这是一篇关于51单片机实机LED点阵的插线图和代码说明.另外还有一篇我写的仿真的连接在这:http://t.csdnimg.cn/ZNLCl,欢迎大家的点赞,评论,关注. 一.线位置 接线实机图. 引脚位置注意: 1. *-* P00->RE8 P01->RE7 …

孟德尔随机化R包:TwoSampleMR和MR-PRESSO安装

1. 孟德尔随机化R包 看一篇文章,介绍孟德尔随机化分析,里面推荐了这两个R包,安装了解一下: Methods:Genome-wide association study (GWAS) data for autoimmune diseases and AMD were obtained from the IEU Open GWAS databas…

C#客户端

控件 打开链接 Socket socket; // 打开连接 private void button1_Click(object sender, EventArgs e) {button1.Enabled false;button2.Enabled true;//1 创建socket客户端对象socket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 2…

鸿蒙轻内核A核源码分析系列四(2) 虚拟内存

本文我们来熟悉下OpenHarmony鸿蒙轻内核提供的虚拟内存(Virtual memory)管理模块。 本文中所涉及的源码,以OpenHarmony LiteOS-A内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。如果涉及开发板…

鸿蒙开发文件管理:【@ohos.environment (目录环境能力)】

目录环境能力 该模块提供环境目录能力,获取内存存储根目录、公共文件根目录的JS接口。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接口为系统接口,三方应用不支…

SLT简介【简单介绍SLT】

SLT简介 在c的学习当中STL的学习是一个很重要的一环,但是STL又是一个庞大的章节,因此这里我们先简单介绍一下STL,有助于后面我们对STL的学习,这里就是做一个简单的介绍,并无干货。 1.什么是STL STL(standard templa…

【Emacs Verilog mode保姆级的使用指南】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Python | Leetcode Python题解之第145题二叉树的后序遍历

题目&#xff1a; 题解&#xff1a; class Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:def addPath(node: TreeNode):count 0while node:count 1res.append(node.val)node node.righti, j len(res) - count, len(res) - 1while i < j:res…

微软如何打造数字零售力航母系列科普13 - Prime Focus Technologies在NAB 2024上推出CLEAR®对话人工智能联合试点

Prime Focus Technologies在NAB 2024上推出CLEAR对话人工智能联合试点 彻底改变您与内容的互动方式&#xff0c;从内容的创建到分发 洛杉矶&#xff0c;2024年4月9日/PRNewswire/-媒体和娱乐&#xff08;M&E&#xff09;行业人工智能技术解决方案的先驱Prime Focus Techn…

【docker】compose 使用 .env 文件

在 Docker Compose 中&#xff0c;你可以使用 .env 文件来定义环境变量&#xff0c;这些变量可以在 docker-compose.yml 文件中被引用。这允许你轻松地管理配置&#xff0c;而不需要硬编码值到你的 Compose 文件中。 以下是如何在 Docker Compose 中使用 .env 文件的步骤&…

Qt C++ TCP服务端响应多客户端通讯

本示例使用的设备&#xff1a;WIFI无线4G网络RFID云读卡器远程网络开关物流网阅读器TTS语音-淘宝网 (taobao.com) #include "mainwindow.h" #include "ui_mainwindow.h" #include "QMessageBox" #include <QDebug> #include <exceptio…

qemu创建kvm虚拟机-x86模拟arm

1、虚拟机环境 虚拟机ubuntu22.042、下载需要的依赖 apt install openssh-server net-tools vim -yapt install qemu qemu-kvm qemu-system-arm bridge-utils uml-utilities qemu-efi-aarch64 cloud-image-utils -y#查看版本 qemu-img -V(1) 下载uefi固件 cd /optwget https…

[大模型]LLaMA3-8B-Instruct Lora 微调

本节我们简要介绍如何基于 transformers、peft 等框架&#xff0c;对 LLaMA3-8B-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法&#xff0c;深入了解其原理可参见博客&#xff1a;知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件&#xff0c…

服务器如何远程桌面连接不上,服务器远程桌面连接不上解决办法

服务器远程桌面连接不上&#xff0c;是IT运维中常见的挑战之一。针对这一问题&#xff0c;专业的解决方法通常涉及以下几个方面的排查与操作&#xff1a; 首先&#xff0c;我们需要检查网络连接是否正常。远程桌面连接依赖于稳定的网络连接&#xff0c;因此&#xff0c;确认服务…

【云原生】创建harbor私有仓库及使用aliyun个人仓库

1.安装docker #删除已有dockersystemctl stop docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine #安装docker yum install -y docker-ce-20.10.1…