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

python爬取招聘网站数据

这段代码是使用Selenium自动化测试模块进行网页爬取的示例代码。它通过模拟人的行为在浏览器中操作网页来实现爬取。具体的流程如下:

  1. 导入所需的模块,包括Selenium、时间、随机、csv等模块。
  2. 打开浏览器,创建一个Chrome浏览器实例。
  3. 设置要爬取的页数范围。
  4. 循环遍历每一页的URL。
  5. 访问每一页的URL,获取网页数据。
  6. 创建一个CSV文件,设置字段名。
  7. 获取每个职位的详情页URL。
  8. 遍历每个详情页URL,发送请求获取响应数据。
  9. 使用css选择器解析响应数据,提取所需的数据内容。
  10. 将提取到的数据写入CSV文件。
  11. 打印出职位的相关信息。

        该代码的主要功能是爬取招聘网上的职位信息,包括职位名、薪资、城市、经验、学历、福利、岗位标签、公司名、详情页等信息。使用了Selenium模拟人的行为,通过使用开发者工具获取到的CSS选择器来定位和提取数据。

 

# 导入自动化测试模块
from selenium import webdriver
# 导入时间模块
import time
# 导入随机模块
import random
# 导入csv模块  内置模块 不需要安装
import csv
import requests
import parsel
"""
selenium: 模拟人的行为去操作浏览器
"""
# 1. 打开浏览器
driver = webdriver.Chrome()# 设置页数范围
start_page = 0
end_page = 10  # 假设要爬取前5页的数据
for page in range(start_page, end_page):# 2. 访问网站url = f'https://www.liepin.com/zhaopin/?city=070020&dq=070020&pubTime=&currentPage={page}&pageSize=40&key=%E8%B4%A2%E5%8A%A1bp&suggestTag=&workYearCode=0&compId=&compName=&compTag=&industry=&salary=&jobKind=&compScale=&compKind=&compStage=&eduLevel=&otherCity=&sfrom=search_job_pc&ckId=vda04kszzsgxhhl7nc4fc21r5hthguv9&scene=condition&skId=vda04kszzsgxhhl7nc4fc21r5hthguv9&fkId=vda04kszzsgxhhl7nc4fc21r5hthguv9&suggestId='driver.get(url)# 隐式等待 ---> 让网页数据加载完成driver.implicitly_wait(10)time.sleep(3)# 创建文件f = open('data.csv', mode='a', encoding='utf-8', newline='')csv_writer = csv.DictWriter(f, fieldnames=['职位名','薪资','城市','经验','学历','福利','岗位标签','公司名','详情页',])# 写入表头csv_writer.writeheader()# 3. 获取岗位详情页url地址url_list = driver.find_elements('css selector', '.job-detail-box a')for index in url_list:url = index.get_attribute('href')print(url)time.sleep(random.randint(1, 2))"""1. 发送请求, 模拟浏览器对 url地址 发送请求- 把python代码伪装成浏览器发送请求目的: 为了防止被反爬"""# 请求url地址# url = 'https://www.liepin.com/job/1948917627.shtml?d_sfrom=search_prime&d_ckId=null&d_curPage=2&d_pageSize=40&d_headId=null&d_posi=1&skId=s5h3mfxh8n1c3ec3dr7nnc6d4lycb9db&fkId=s5h3mfxh8n1c3ec3dr7nnc6d4lycb9db&ckId=s5h3mfxh8n1c3ec3dr7nnc6d4lycb9db&sfrom=search_job_pc&curPage=2&pageSize=40&index=1'# 模拟伪装  ---> 开发者工具里面进行复制粘贴headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',}# 发送请求 ->  <Response [200]> 表示请求成功response = requests.get(url=url, headers=headers)"""2. 获取数据, 获取服务器返回响应数据开发者工具: responseresponse.text 获取响应文本数据, 返回字符串数据类型 html字符串数据内容3. 解析数据, 提取我们想要的数据内容css选择器 根据标签属性提取数据内容:"""# 把获取下来 html字符串数据内容 <response.text> 转成可解析对象selector = parsel.Selector(response.text)""".job-apply-content .name-box .name 定位标签- get() 获取第一个标签 就获取一个内容 返回字符串- getall 获取所有标签内容, 返回列表css选择器, 在系统课程 都是从头到尾讲2.5个小时才能讲完知识点内容a::text 表示 提取a标签里面文本呀"""title = selector.css('.job-apply-content .name-box .name::text').get()  # 职位名salary = selector.css('.job-apply-content .name-box .salary::text').get()  # 薪资city = selector.css('.job-apply-content .job-properties span:nth-child(1)::text').get()  # 城市exp = selector.css('.job-apply-content .job-properties span:nth-child(3)::text').get()  # 经验edu = selector.css('.job-apply-content .job-properties span:nth-child(5)::text').get()  # 学历# 把列表合并成字符串labels = ','.join(selector.css('.job-apply-container-desc .labels span::text').getall())  # 福利job_labels = ','.join(selector.css('.tag-box ul li::text').getall())  # 职位标签company = selector.css('.company-info-container .company-card .content .name::text').get()  # 公司名job_info = '\n'.join(selector.css('.job-intro-container .paragraph dd::text').getall())  # 岗位职业"""4. 保存数据, 把数据保存本地文件- 基本数据 保存csv表格里面- 岗位职责 保存文本里面"""# 把数据写入到字典里面dit = {'职位名': title,'薪资': salary,'城市': city,'经验': exp,'学历': edu,'福利': labels,'岗位标签': job_labels,'公司名': company,'详情页': url,}# 写入数据csv_writer.writerow(dit)print(title, salary, city, exp, edu, labels, job_labels, company, job_info)

相关文章:

python爬取招聘网站数据

这段代码是使用Selenium自动化测试模块进行网页爬取的示例代码。它通过模拟人的行为在浏览器中操作网页来实现爬取。具体的流程如下&#xff1a; 导入所需的模块&#xff0c;包括Selenium、时间、随机、csv等模块。打开浏览器&#xff0c;创建一个Chrome浏览器实例。设置要爬取…...

灌区信息化方案(什么是现代化灌区,如何一步到位)

一、系统概述 详情&#xff1a;https://www.key-iot.com.cn/ 本灌区信息化方案以星创易联公司的各类智能设备为基础,通过其产品完成水文、雨情、土壤等多源异构数据的采集,以无线自组网的方式实现数据传输,并在后台管理中心建立信息化软件平台,对数据进行融合处理。系统实现对…...

jmeter自动录制脚本功能

问题排查&#xff1a; 建议用 google浏览器&#xff1b; 重启一下jmeter&#xff1b; 过滤规则重新检查下&#xff1b; 看下代理设置是否正常&#xff1b; 注意&#xff1a;下面的的过滤设置中 用的都是正则表达式的规则。...

十一、工具盒类(MyQQ)(Qt5 GUI系列)

目录 ​编辑 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 抽屉效果是软件界面设计中的一种常用形式&#xff0c;可以以一种动态直观的方式在有限大小的界面上扩展出更多的功能。本例要求实现类似 QQ 抽屉效果。 二、实现代码 #include "dialog.…...

postgresql 查询字段 信息

SELECT base.“column_name”, col_description ( t1.oid, t2.attnum ), base.udt_name, COALESCE(character_maximum_length, numeric_precision, datetime_precision), (CASE WHEN ( SELECT t2.attnum ANY ( conkey ) FROM pg_constraint WHERE conrelid t1.oid AND contyp…...

antv/x6_2.0学习使用(四、边)

一、添加边 节点和边都有共同的基类 Cell&#xff0c;除了从 Cell 继承属性外&#xff0c;还支持以下选项。 属性名类型默认值描述sourceTerminalData-源节点或起始点targetTerminalData-目标节点或目标点verticesPoint.PointLike[]-路径点routerRouterData-路由connectorCon…...

C++ stack用法总结

std::stack 是 C 标准模板库&#xff08;STL&#xff09;中的容器适配器&#xff0c;它提供了栈&#xff08;stack&#xff09;的功能&#xff0c;基于其他序列容器实现。以下是 std::stack 的用法总结&#xff1a; 包含头文件&#xff1a; #include <stack>创建 std::…...

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使用…...

PHP 基础编程 2

文章目录 时间函数dategetdatetime 使用数组实现登录注册和修改密码简单数组增加元素方法修改元素方法删除元素方法 具体实现方法数组序列化数组写入文件判断元素是否在关联数组中&#xff08;登录功能实现&#xff09;实现注册功能实现修改admin用户密码功能 时间函数 时区&am…...

git merge origin master 和 git merge origin/master 的区别

git merge origin master和git merge origin/master的区别 1. git checkout dev 2. git fetch origin master 3. git merge origin release 把 origin/master&#xff0c;heads/release merge到 heads/dev1. git checkout dev 2. git fetch origin master 3. git me…...

数据挖掘 模糊聚类

格式化之前的代码&#xff1a; import matplotlib.pyplot as plt#绘图 import pandas as pd#读取数据集 from sklearn.preprocessing import scale from sklearn.cluster import DBSCAN#聚类 from sklearn import preprocessing#数据预处理的功能&#xff0c;包括缩放、标准化…...

Vue2和Vue3各自的优缺点以及区别对比

Vue2和Vue3各自的优缺点以及区别对比 Vue2的优点&#xff1a; 成熟稳定&#xff1a;Vue2是一个经过长时间发展和测试的成熟版本&#xff0c;广泛应用于各种项目中。 生态系统丰富&#xff1a;由于Vue2的流行程度&#xff0c;它的生态系统相对较为完善&#xff0c;有大量的插件…...

手写一个加盐加密算法(java实现)

目录 前言 什么是MD5&#xff1f;&#xff1f; 加盐算法 那别的人会不会跟你得到相同的UUID&#xff1f; 如何使用盐加密&#xff1f; 代码实现 前言 对于我们常见的登录的时候需要用到的组件&#xff0c;加密是一个必不可少的东西&#xff0c;如果我们往数据库存放用户…...

基于Springboot的在线考试系统

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88499371 mysql5、mysql8都可使用 内含配置教程文档&#xff0c;一步一步配置 Springboot所写 管理员页面 学生页面...

【React系列】JSX核心语法和原理

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. ES6 的 class 虽然目前React开发模式中更加流行hooks&#xff0c;但是依然有很多的项目依然是使用类组件&#x…...

【C++初阶(九)】C++模版(初阶)----函数模版与类模版

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…...

Permission denied

Permission denied&#xff1a;权限被拒绝&#xff0c;没有访问文件的权限。 查询对文件的权限&#xff1a; ls -l 文件名称 r为可读权限&#xff0c;w为可写权限&#xff0c;x为可执行权限。 授权文件rwx&#xff0c;可读可写可执行权限&#xff1a; chmod 777 文件名称 如…...

轻松学会电脑如何录制音频

随手录音&#xff0c;保留证据以便后续出现问题进行判定&#xff0c;或者保存会议音频记录方便后续根据录音内容整理自己会议记录不足之处等等&#xff1b;越来越多的地方需要用到录音&#xff0c;那么在电脑上该如何进行音频录制呢&#xff1f;特别是使用比较广泛的Windows电脑…...

react antd,echarts全景视图

1.公告滚动&#xff0c;40s更新一次 2.echarts图标 左右轮播 60s更新一次 3.table 表格 import { useState, useEffect } from react;import Slider from react-slick; import slick-carousel/slick/slick-theme.css; import slick-carousel/slick/slick.css;import Layout fro…...

GD32 支持IAP的bootloader开发,使用串口通过Ymodem协议传输固件(附代码)

资料下载: https://download.csdn.net/download/wouderw/88714985 一、概述 关于IAP的原理和Ymodem协议&#xff0c;本文不做任何论述&#xff0c;本文只论述bootloader如何使用串口通过Ymodem协议接收升级程序并进行IAP升级&#xff0c;以及bootloader和主程序两个工程的配置…...

从DICOM到NIfTI:3D Slicer中医学图像坐标转换的完整避坑指南(附Python代码片段)

从DICOM到NIfTI&#xff1a;3D Slicer中医学图像坐标转换的完整避坑指南&#xff08;附Python代码片段&#xff09; 医学影像处理中&#xff0c;数据格式和坐标系的差异常常成为工程师和研究员们的"隐形杀手"。想象一下&#xff0c;你花了三天三夜训练的深度学习模型…...

vim-airline缓冲区管理终极指南:解锁高效Vim编辑的10个技巧

vim-airline缓冲区管理终极指南&#xff1a;解锁高效Vim编辑的10个技巧 【免费下载链接】vim-airline lean & mean status/tabline for vim thats light as air 项目地址: https://gitcode.com/gh_mirrors/vi/vim-airline 想要在Vim中实现极致的编辑效率吗&#xff…...

全球扩张加剧法律复杂性,但仅有7%的企业实现全面合规

• 47%的总法律顾问表示&#xff0c;实际控制人规则对法律运营构成了最大的风险 • 44%的企业对能否满足跨境数据安全要求缺乏信心 随着企业在2026年加速全球扩张&#xff0c;合规工作却未能跟上步伐。事实上&#xff0c;根据全球领先的商业管理与合规解决方案提供商CSC的一项最…...

LaTeX2Word-Equation:3分钟实现LaTeX公式到Word的无缝转换

LaTeX2Word-Equation&#xff1a;3分钟实现LaTeX公式到Word的无缝转换 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 还在为学术论文中复杂的数…...

尤克里里的前世今生:这把“跳蚤小吉他”,凭什么火遍全世界?

提到尤克里里&#xff0c;大家脑海里瞬间浮现的&#xff0c;一定是阳光、沙滩、草裙舞、海风与欢快旋律的画面&#xff01;这把小小的四弦乐器&#xff0c;颜值清新、音色治愈&#xff0c;上手零门槛&#xff0c;不管是小朋友启蒙、成年人解压&#xff0c;还是旅行随手弹&#…...

两级宽带反馈放大器设计与优化方法

1. 两级宽带反馈放大器设计概述在当今高速通信和信号处理系统中&#xff0c;宽带放大器作为关键模拟模块&#xff0c;其性能直接影响整个系统的信号完整性。传统的手工设计方法在面对现代SoC日益复杂的性能需求时显得力不从心&#xff0c;特别是在需要同时满足增益、带宽、噪声…...

告别单调!用LVGL Button控件打造3种高级交互动效(附完整C代码)

用LVGL Button控件实现高级交互动效的实战指南 在嵌入式设备上打造流畅、生动的用户界面一直是开发者的挑战。LVGL作为轻量级图形库&#xff0c;其Button控件的基础功能虽然简单&#xff0c;但通过巧妙运用样式和动画API&#xff0c;可以实现媲美移动端的高级交互效果。本文将深…...

vibe-to-ui:让AI助手将你的“感觉”翻译成专业设计系统

1. 项目概述&#xff1a;当“感觉”成为设计语言如果你和我一样&#xff0c;是一个能写出复杂业务逻辑&#xff0c;但一碰到UI设计就头疼的开发者&#xff0c;那今天聊的这个工具&#xff0c;可能会彻底改变你的工作流。我们常常陷入一个困境&#xff1a;心里有一个模糊的“感觉…...

基于Arduino Pro Micro的薄膜键盘矩阵改造:DIY低成本模拟飞行外设

1. 项目概述&#xff1a;为Falcon BMS打造一款经济型多功能按键面板如果你是一名《Falcon BMS》的飞行模拟爱好者&#xff0c;同时又对硬件DIY抱有热情&#xff0c;那么你很可能和我一样&#xff0c;对市面上那些动辄数百甚至上千元的专业模拟飞行外设感到望而却步。尤其是像F-…...

《蔚蓝档案》鼠标指针主题:从设计到安装的完整桌面美化指南

1. 项目概述&#xff1a;为你的桌面注入《蔚蓝档案》的学园气息如果你和我一样&#xff0c;既是《蔚蓝档案》的玩家&#xff0c;又是个喜欢折腾桌面美化的爱好者&#xff0c;那么今天分享的这个项目绝对会让你眼前一亮。它不是什么复杂的软件&#xff0c;而是一套精心制作的Win…...