当前位置: 首页 > news >正文

python爬虫实现获取招聘信息

使用的python版本: 3.12.1

selenium版本:4.8.0

urllib版本:1.26.18

from selenium import webdriver 
from selenium.webdriver import ActionChains
import timeimport re
import xlwt
import urllib.parsedef get_html(url):chrome_driver = r"C:\chrome-win64\chromedriver.exe"options = webdriver.ChromeOptions()  # 用于配置Chrome浏览器驱动程序的行为options.add_argument("headless")  # 无界面启动options.add_experimental_option('useAutomationExtension', False)  # 禁用Chrome的自动化拓展程序options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 确保浏览器不会因为启用自动化模式而出现不必要的错误或异常。options.add_argument("--disable-blink-features=AutomationControlled")  # 禁用由自动化测试或脚本控制的 Blink 功能。driver = webdriver.Chrome(chrome_options=options, executable_path=chrome_driver)# webdriver防屏蔽,不加这个就会出现滑动失败driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => false})"""})driver.get(url)time.sleep(1)# 找到需要滑动的滑块元素slider = driver.find_element("class name","nc_bg")# 创建操作链action_chains = ActionChains(driver)# 将鼠标移动到滑块上action_chains.move_to_element(slider)# 模拟按下鼠标左键并保持不松开action_chains.click_and_hold()# 移动鼠标使滑块达到目标位置action_chains.move_by_offset(300, 0)# 松开鼠标左键action_chains.release()# 执行操作链action_chains.perform()time.sleep(10)html = driver.page_source  # 获取网页源码driver.quit()  # 清除后再退出return htmldef get_msg(excel1, sheet1):number = 0job_type = input("请输入你想要搜索的职位:")for i in range(1, 3):  # 页数自己随便改try:print("正在爬取第" + str(i) + "页数据...")result = urllib.parse.quote(job_type)  # 编码url_start = 'https://we.51job.com/api/job/search-pc?api_key=51job&keyword=' + result# 删除&timestamp参数,修改&pageSize=500url_end = '&searchType=2&function=&industry=&jobArea=090200&jobArea2=&landmark=&metro=&salary=&workYear=&degree=&companyType=&companySize=&jobType=&issueDate=&sortType=0&pageNum=' \+ str(i) + '&requestId=&pageSize=200&source=1&accountId=&pageCode=sou%7Csou%7Csoulb'url = url_start + url_endmsg = get_html(url)  # 用seleinum写的方法处理需要滑动进入,相当于这一部分可以拿到数据了msg = msg.replace('\\', '')  # 将用于转义的"\"替换为空# `(.*?)`表示任意我们想要的内容# `.*?`表示任意其他字符串reg = re.compile(r'"jobName"\s*:\s*"([^"]*)".*?'r'"cityString"\s*:\s*"([^"]*)".*?'r'"provideSalaryString"\s*:\s*"([^"]*)".*?'r'"issueDateString"\s*:\s*"([^"]*)".*?'r'"workYearString"\s*:\s*"([^"]*)".*?'r'"degreeString"\s*:\s*"([^"]*)".*?'r'"companyName"\s*:\s*"([^"]*)".*?'r'"companyTypeString"\s*:\s*"([^"]*)".*?'r'"companySizeString"\s*:\s*"([^"]*)"',re.DOTALL)  # 表示可以用.代替任意字符(包括那些换行符)items = reg.findall(msg)  # 按照正则表达式规则查找for item in items:number = number + 1print(number, item[0], item[1], item[2], item[3], item[4], item[5], item[6], item[7], item[8])sheet1.write(number, 0, number)sheet1.write(number, 1, item[0])sheet1.write(number, 2, item[6])sheet1.write(number, 3, item[1])sheet1.write(number, 4, item[7])sheet1.write(number, 5, item[2])sheet1.write(number, 6, item[5])sheet1.write(number, 7, item[4])sheet1.write(number, 8, item[8])sheet1.write(number, 9, item[3])# 表格文件保存是可以选择两种情况,# 一种在for循环里面,每写一行保存一次,这样可以放在程序中途出现异常后,文件内容啥也没有# 另一种是在for循环之外,所有内容写完再保存excel1.save("51job.xlsx")time.sleep(0.5)  # 休息间隔except Exception as e:print("except:"+str(e))passdef creat_xls(excel1):# 设置单元格格式sheet1 = excel1.add_sheet('Job', cell_overwrite_ok=True)sheet1.write(0, 0, '序号')sheet1.write(0, 1, '职位')sheet1.write(0, 2, '公司名称')sheet1.write(0, 3, '公司地点')sheet1.write(0, 4, '公司性质')sheet1.write(0, 5, '薪资')sheet1.write(0, 6, '学历要求')sheet1.write(0, 7, '工作经验')sheet1.write(0, 8, '公司规模')sheet1.write(0, 9, '发布时间')return sheet1def main():# 新建表格空间excel1 = xlwt.Workbook()  # 创建工作簿sheet1 = creat_xls(excel1)  # 创建工作表get_msg(excel1, sheet1)  # 使用函数if __name__ == '__main__':main()

相关文章:

python爬虫实现获取招聘信息

使用的python版本: 3.12.1 selenium版本:4.8.0 urllib版本:1.26.18 from selenium import webdriver from selenium.webdriver import ActionChains import timeimport re import xlwt import urllib.parsedef get_html(url):chrome_drive…...

模块电源(七):LDO 应用

1、Typical application circuit LDO 典型应用电路如下图所示: 2、High Output Current Positive Voltage Regulator 通过 PNP 型三极管 Tr1 ,可以提高 LDO 的输出电流能力,电路如下图所示: 设流过 R1 的电流为 ,当 …...

Redis命令---Hash(哈希)篇 (超全)

目录 1.Redis Hmset 命令 - 同时将多个 field-value (域-值)对设置到哈希表 key 中。简介语法可用版本: > 2.0.0返回值: 如果命令执行成功,返回 OK 。 示例 2.Redis Hmget 命令 - 获取所有给定字段的值简介语法可用版本: > 2.0.0返回值: 一个包含多个给定字段…...

Objects are not valid as a React child (found: object with keys {name}).

在jsx中可以嵌套表达式,将表达式作为内容的一部分,但是要注意,普通对象不能作为子元素;但是数组,react元素对象是可以的 如下:不能将stu这个对象作为子元素放 function App() {const myCal imgStyleconst…...

nodejs业务分层如何写后端接口

这里展示的是在node express 项目中的操作 ,数据库使用的是MongoDB,前期关于express和MongoDB的文章可访问: Nodejs后端express框架 server后端接口操作:通过路由匹配——>调用对应的 Controller——>进行 Service调用——&…...

Windows 7 虚拟机的安装以及解决安装VMVMware tools问题

1.Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 参考:Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 注意:下载官方补丁:Microsoft Update Catalog在智慧联想浏览器中打不开,要在火狐中才能打开下载。 2.win7如…...

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器) P —— Proportional I —— Integral D —— Derivative 当前误差/过去误差/误差的变化趋势 K p ⋅ e K_{\mathrm{p}}\cdot e Kp​⋅e:比…...

SSM养老院综合服务系统----计算机毕业设计

项目介绍 该项目为后台管理项目,分为管理员与护工两种角色; 管理员角色包含以下功能: 管理员登录,个人资料密码管理,用户管理,床位类型管理,床位管理,护工管理,老人管理,咨询登记管理,预约登记管理,老人健康信息管理,费用管理等功能。 护…...

广州求职招聘(找工作)去哪里找比较好

在广州找工作,可以选择“吉鹿力招聘网”这个平台。它是一个号称直接和boss聊的互联网招聘神器,同时,“吉鹿力招聘网”作岗位比较齐全,企业用户也多,比较全面。在“吉鹿力招聘网”历即可投递岗位。 广州找工作上 吉鹿力…...

ARM NEON 指令

NEON指令 按照操作数类型可以分为正常指令、宽指令、窄指令、饱和指令、长指令。 正常指令:生成大小相同且类型通常与操作数向量相同到结果向量。长指令:对双字向量操作数执行运算,生产四字向量到结果。所生成的元素一般是操作数元素宽度到…...

Open3D 最小二乘拟合平面——拉格朗日乘子法

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接Open3D 最小二乘拟合平面——拉格朗日乘子法。爬虫自重。 一、算法原理 设拟合出的平面方程为: a x + b y +...

Rockchip平台Android应用预安装功能(基于Android13)

Rockchip平台Android应用预安装功能(基于Android13) 1. 预安装应用类型 Android上的应用预安装功能,主要是指配置产品时,根据厂商要求,将事先准备好的第三方应用预置进Android系统。预安装分为以下几种类型: 安装不可卸载应用安…...

vue项目表单使用正则过滤ip、手机号

import useFormValidate from /hooks/useFormValidatesetup(props, { emit }) {const { validateName, validateIPAndPort } useFormValidate()const state reactive({workFaceInfo: props.info?.id ? props.info : {},sysTypeData: props.sysType,formRules: {name: [{req…...

vscode编译调试sln工程

使用msvc工具链 vscode配置调用visual studio的编译和调试环境_vscode用vs-CSDN博客 将vscode打造无敌的IDE(14) tasks.json和launch.json配置详解,随心所欲添加自动化任务_tasks.json详解-CSDN博客 通过命令行使用 Microsoft C 工具集 | Microsoft Learn 编译…...

Android 车联网——CarManager管理器(四)

上篇文章介绍了CarPropertyService 的使用,这一篇我们来看一下 Android Automotive OS 中一些子模块如何使用 CarPropertyManager。 一、管理器调用 ICarImpl 源码位置:/packages/services/Car/service/src/com/android/car/ICarImpl.java @Override public IBinder getC…...

C# OpenCvSharp读取rtsp流录制mp4可分段保存

软件界面: 测试环境: VS2019 .NET Framework 4.7.2 OpencvSharp4.8.0 输入RTSP流地址即可拉取RTSP流,支持抓拍和录制RTSP流视频,且支持支持按固定时间保存,比如我想5分钟保存一个视频,设置保存间隔为30…...

Maven的心脏:深入解析settings.xml配置文件

Maven作为Java世界中最著名的构建工具之一,其灵魂所在无疑是那些配置文件。在这些配置文件中,settings.xml扮演着至关重要的角色。今天,我们就来深入剖析这个Maven的心脏部件,看看它如何为我们的项目搏动生命。 一、Maven settin…...

uni静态资源引入及css图片图标引用规范

1、页面组件引入 单页面中的组件引入需经过导入——注册——使用三个步骤&#xff1b; <template><view><!-- 3.使用组件 --><uni-rate text"1"></uni-rate></view> </template> <script>// 1. 导入组件import un…...

API 开放平台项目(已整理,已废弃)

项目大纲 前端 React 18Ant Design Pro 5.x 脚手架Ant Design & Procomponents 组件库Umi 4 前端框架OpenAPI 前端代码生成 后端 Java Spring BootMySQL 数据库MyBatis-Plus 及 MyBatis X 自动生成API 签名认证&#xff08;Http 调用&#xff09;Spring Boot Starter&#…...

魔棒无人直播系统有哪些优势?

随着科技的发展&#xff0c;越来越多新鲜事物的出现&#xff0c;它们代替了我们做很多的事情&#xff0c;开始解放着自己的双手&#xff0c;其中&#xff0c;无人直播的出现&#xff0c;就让直播变得更加简单。 因为是无人直播&#xff0c;所以全程不需要真人出镜&#xff0c;…...

OpenClaw监控告警:GLM-4.7-Flash任务异常自动通知设置

OpenClaw监控告警&#xff1a;GLM-4.7-Flash任务异常自动通知设置 1. 为什么需要监控告警系统 上周我部署了一个基于GLM-4.7-Flash的自动化日报生成任务&#xff0c;结果连续三天都没收到输出。检查后发现是模型服务意外重启导致任务中断——这种"静默失败"在自动化…...

如何通过MCP协议实现AI助手与Figma设计的双向交互

如何通过MCP协议实现AI助手与Figma设计的双向交互 【免费下载链接】cursor-talk-to-figma-mcp Cursor Talk To Figma MCP 项目地址: https://gitcode.com/GitHub_Trending/cu/cursor-talk-to-figma-mcp 在当今的设计开发工作流中&#xff0c;设计工具与AI助手之间的割裂…...

开源项目依赖管理:从冲突解决到高效协作的实践指南

开源项目依赖管理&#xff1a;从冲突解决到高效协作的实践指南 【免费下载链接】IPED IPED Digital Forensic Tool. It is an open source software that can be used to process and analyze digital evidence, often seized at crime scenes by law enforcement or in a corp…...

mcp和skills 有什么区别?

MCP&#xff08;Model Context Protocol&#xff09;和 Kimi Skills 是协议标准与功能实现的关系——MCP 是底层的标准化接口规范&#xff0c;而 Skills 是基于该协议构建的具体功能模块。核心关系图解┌──────────────────────────────────…...

收藏!后端岗遇冷,大模型+算法岗成程序员新出路(小白必看)

最近刷招聘软件的开发者们&#xff0c;想必都感受到了一股明显的“寒意”&#xff1a;后端开发岗位数量肉眼可见地锐减&#xff0c;薪资涨幅彻底停滞&#xff0c;甚至有不少求职者吐槽&#xff0c;自己投递了70份后端简历&#xff0c;最终只收到3个面试邀约&#xff0c;更让人无…...

Thief-Book:在IDE中开辟第二空间的开发者时间管理工具

Thief-Book&#xff1a;在IDE中开辟第二空间的开发者时间管理工具 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 作为开发者&#xff0c;你是否也曾经历过这样的场景&#xff1a;代码正在…...

vDisk课表同步指南:Windows/Linux平台配置详解

vDisk课表同步指南&#xff1a;Windows/Linux平台配置详解本指南旨在为使用 vDisk IDV 云桌面解决方案的学校和培训机构&#xff0c;提供一份详尽的 vDisk 课表同步配置指南&#xff0c;重点介绍 Windows 和 Linux 平台下的配置要点。通过本文&#xff0c;您将了解如何利用 Exc…...

滤波实战:从原理到代码的平滑之旅

1. 滤波技术的前世今生 第一次接触滤波概念是在研究生时期做无人机姿态解算项目时。当时从陀螺仪和加速度计采集的原始数据跳得跟心电图似的&#xff0c;导师只说了一句"加个滤波器"&#xff0c;却让我在图书馆泡了整整两周。现在回想起来&#xff0c;滤波本质上就是…...

专精特新企业品牌升级实操:把技术专长转换成客户敢选的购买理由

最容易做错的一步&#xff0c;不是没做&#xff0c;而是把“专精特新企业品牌升级”做成了换壳&#xff1a;标题换了&#xff0c;结构没换&#xff1b;字数变了&#xff0c;判断逻辑没变。一、问题定义很多专精特新企业都会遇到一种很委屈的状态&#xff1a;客户见完之后说“你…...

Windows Server 2008 R2提权实战:用MS15-051漏洞从WebShell到System权限的完整操作记录

Windows Server 2008 R2权限提升实战&#xff1a;从低权限到系统控制的技术剖析 在渗透测试的实战场景中&#xff0c;获取初始立足点往往只是开始。当安全研究人员或红队成员通过Web漏洞获得了一个低权限的WebShell后&#xff0c;如何突破权限限制&#xff0c;获取系统最高控制…...