Python采集猎聘网站招聘数据内容,看看现在职位风向

news2024/9/21 14:53:58

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • Python 3.10

  • Pycharm

模块使用:

第三方模块,需安装:

  • requests -> pip install requests

  • pandas -> pip install pandas

  • pyecharts -> pip install pyecharts

内置模块,无需安装:

  • csv

  • execjs

如何安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


爬虫实现流程:

一. 数据来源分析
1. 明确需求
    采集 https://www.liepin.com/ 上面的招聘数据
2. 抓包分析
    请求网址: https://api-c.liepin.com/api/com.liepin.searchfront4c.pc-search-job
    请求方式: post
二. 代码实现步骤
1. 发送请求
2. 获取数据
3. 解析数据
4. 保存数据

post请求需要向服务器提交表单数据

请求参数: 隐性

get向服务器获取的数据

请求参数: 显性 (一般存在网址链接中)

批量采集数据:

分析请求参数不一样的地方
currentPage: 页码 从0开始计数 每页+1
    -> for循环遍历构建一下
ckId: 不规律
    1. 直接搜参数内容 看是否有某地方返回这个内容
        第二页ckId 可能在第一页响应数据中返回
    2. 分析参数是如何生成的
        找JS生成代码
    通过js代码生成出来了...

代码展示

导入模块

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块
import requests
# 导入格式化输出模块
from pprint import pprint
# 导入csv模块
import csv

“”“创建文件对象”“”

f = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '职位',
    '城市',
    '区域',
    '薪资',
    '年薪',
    '经验',
    '学历',
    '标签',
    '公司',
    '公司领域',
    '公司规模',
])
csv_writer.writeheader()

“”"

  1. 发送请求 -> requests 数据请求模块
  • 模拟浏览器对于url地址发送请求
    只要找对数据所在位置(url), 其余可以复制

“”"

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 模拟浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',

}
# 请求网址
url = 'https://api-c.liepin.com/api/com.liepin.searchfront4c.pc-search-job'
for page in range(10):
    # 请求参数
    data = {"data": {
        "mainSearchPcConditionForm": {"city": "410", "dq": "410", "pubTime": "", "currentPage": page, "pageSize": 40,
                                      "key": "python", "suggestTag": "", "workYearCode": "0", "compId": "", "compName": "",
                                      "compTag": "", "industry": "", "salary": "", "jobKind": "", "compScale": "",
                                      "compKind": "", "compStage": "", "eduLevel": "", "otherCity": ""},
        "passThroughForm": {"sfrom": "search_job_pc", "ckId": "lonni5d1ekjw3ojvsrz592uzvjd32fn8", "scene": "page",
                            "skId": "mybrnd8iuhb53a1pter1k9g5s6jg4fz9", "fkId": "mybrnd8iuhb53a1pter1k9g5s6jg4fz9"}}}
    # 发送请求
    response = requests.post(url=url, json=data, headers=headers)

“”"

  1. 获取数据
    • 获取服务器返回响应数据
      “”"
    json_data = response.json()

“”"

  1. 解析数据, 提取我们需要的数据内容
    字典取值: 键值对取值

“”"

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
    # 获取招聘信息所在列表
    jobCardList = json_data['data']['data']['jobCardList']
    # for循环遍历, 提取列表元素
    for index in jobCardList:
        """简单处理数据
        split(): 字符串分割
            '武汉-江夏区' -> ['武汉', '江夏区']
            '海口' -> ['海口']
        """
        city_info = index['job']['dq'].split('-')
        # 判断列表有几个元素
        if len(city_info) == 2:  # 说明包含了 区域位置
            city = city_info[0]
            area = city_info[1]
        else:
            city = city_info[0]
            area = '未知'
        salary_info = index['job']['salary'].split('·')
        if len(salary_info) == 2:
            money = salary_info[0]
            year_money = salary_info[1]
        else:
            money = salary_info[0]
            year_money = '12薪'

        # 获取招聘数据, 保存字典
        dit = {
            '职位': index['job']['title'],
            '城市': city,
            '区域': area,
            '薪资': money,
            '年薪': year_money,
            '经验': index['job']['requireWorkYears'],
            '学历': index['job']['requireEduLevel'],
            '标签': ','.join(index['job']['labels']),
            '公司': index['comp']['compName'],
            '公司领域': index['comp']['compIndustry'],
            '公司规模': index['comp']['compScale'],
        }
        csv_writer.writerow(dit)
        print(dit)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS/JQ实现小程序/H5验证码页面

话不多说&#xff0c;先上效果图 核心代码 1、html/css关键代码 <div class"obtain-verification-code"><div class"obtain-verification-code-input-content"><input id"input-0" class"verification-code-input" m…

校招社招,认知能力测验,③如何破解语言常识类测试题?

作为认知能力测评中的一个环节&#xff0c;语言常识类&#xff0c;是大概率的出现&#xff0c;不同的用人单位可能略有不同&#xff0c;语言是一切的基础&#xff0c;而常识则意味着我们的知识面的宽度。 语言常识类的测试&#xff0c;如果要说技巧&#xff1f;难说....更多的…

微信公众号H5,录音功能

功能&#xff1a; 按住录音&#xff0c;移开取消&#xff0c;调用的微信录音api&#xff0c;因手机端H5长按图片文字会放大或者选中&#xff0c;得禁止 效果图&#xff1a; html <van-popupv-model"vanPopupShow"roundposition"bottom":style"…

ElasticSearch 集群搭建与状态监控cerebro

单机的elasticsearch做数据存储&#xff0c;必然面临两个问题:海量数据存储问题、单点故障问题。为了解决存储能力上上限问题就可以用到集群部署。 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard)&#xff0c;存储到多个节点单点故障问题:将分片数据在不同节点备份 (r…

SCI一区级 | Matlab实现RIME-CNN-LSTM-Mutilhead-Attention多变量多步时序预测

SCI一区级 | Matlab实现RIME-CNN-LSTM-Mutilhead-Attention多变量多步时序预测 目录 SCI一区级 | Matlab实现RIME-CNN-LSTM-Mutilhead-Attention多变量多步时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RIME-CNN-LSTM-Mutilhead-Attention霜冰算法…

MyBatisPlus学习二:常用注解、条件构造器、自定义sql

常用注解 基本约定 MybatisPlus通过扫描实体类&#xff0c;并基于反射获取实体类信息作为数据库表信息。可以理解为在继承BaseMapper 要指定对应的泛型 public interface UserMapper extends BaseMapper<User> 实体类中&#xff0c;类名驼峰转下划线作为表名、名为id的…

若依CRUD搬砖开始,Java小白入门(十)

背景 经过囫囵吞枣的学习若依框架&#xff0c;对于ruoyi-framework&#xff0c;common&#xff0c;安全&#xff0c;代码生成等模块都看了一圈&#xff0c;剩余的调度模块&#xff0c;这个暂时不深入&#xff0c;剩余的是ruoyi-system&#xff0c;就是用mybatis完成的&#xf…

基于算术优化算法优化的Elman神经网络数据预测 - 附代码

基于算术优化算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于算术优化算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于算术优化优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

纯血国产:鸿蒙系统与安卓分道扬镳,对低代码开发行业的影响

近日&#xff0c;科技圈迎来了一则震动性的新闻——鸿蒙系统的“独立宣言”。这一举措意味着鸿蒙系统将与安卓、iOS形成三足鼎立之势&#xff0c;为全球科技市场注入新的活力。 据华为内部人士透露&#xff0c;从明年起&#xff0c;HarmonyOS系统将不再兼容安卓应用&#xff0c…

数模学习day08-拟合算法

这里拟合算法可以和差值算法对比 引入 插值和拟合的区别 与插值问题不同&#xff0c;在拟合问题中不需要曲线一定经过给定的点。拟 合问题的目标是寻求一个函数&#xff08;曲线&#xff09;&#xff0c;使得该曲线在某种准则下与所 有的数据点最为接近&#xff0c;即曲线拟…

springCould中的Hystrix【下】-从小白开始【8】

目录 &#x1f9c2;1.熔断机制❤️❤️❤️ &#x1f32d;2.修改8001服务 ❤️❤️❤️ &#x1f95e;3.测试 ❤️❤️❤️ &#x1f953;4. 服务监控hystrixDashboard❤️❤️❤️ &#x1f32d;5.仪表盘❤️❤️❤️ &#x1f9c2;6.仪表盘的使用 ❤️❤️❤️ 1.熔断机…

Linux的Inode号和日志服务管理

目录 一、Inode号 1.inode和block 2.查看inode信息 二、日志服务管理 1.日志的级别 2.日志的种类 3.日志的功能和日志文件的分类 4.日志的格式和分析工具 三、rsyslog日志处理系统 1、使用Rsyslog创建日志优点 2、Rsyslog配置文件解析 3.通过rsyslog将ssh服务的日志…

k8s---pod基础下

k8s的pod与docker重启策略的区别 k8s的重启策略 always deployment的yaml文件只能是always&#xff0c;pod的yaml三种模式都可以。不论正常退出还是非正常退出都重启。OnFailure&#xff1a;正常退出不重启&#xff0c;非正常退出会重启Never&#xff1a;正常退出和非正常退出…

宿舍安全用电监控系统解决方案

摘 要&#xff1a;很多高校宿舍的用电功率存在限制,为此设计了宿舍用电智能监控系统。系统由主控制器、采集部分、通信部分组成。利用STM32作为主控芯片,采集部分采用BL0937芯片采集电压和电流,采集多条线路用电数据,各路数据采集通道均采用隔离保护,通信部采用4G、LoRa无线通信…

系统架构设计师教程(十)软件可靠性基础知识

软件可靠性基础知识 10.1 软件架构演化和定义的关系10.1.1 演化的重要性10.1.2 演化和定义的关系 10.2 面向对象软件架构演化过程10.2.1 对象演化10.2.2 消息演化10.2.3 复合片段演化10.2.4 约束演化 10.3 软件架构演化方式的分类10.3.1 软件架构演化时期10.3.2 软件架构静态演…

Dockerfile基本结构及编写详解

文章目录 1 Dockerfile1.1 Dockerfile的基本结构1.2 Dockerfile文件说明1.3 Dockerfile常见命令1.4 build命令1.5 部署微服务1.6 docker-compose部署 1 Dockerfile ​ Dockerfile其实就是我们用来构建Docker镜像的源码&#xff0c;当然这不是所谓的编程源码&#xff0c;而是一…

用通俗易懂的方式讲解:2024 检索增强生成技术(RAG)研究进展

本篇内容1w字左右&#xff0c;稍微有点长&#xff0c;相对不容易理解&#xff0c;喜欢可以收藏、关注、点赞。 一、前言 在过去的一两年里&#xff0c;人工智能领域目睹了检索增强生成技术&#xff08;RAG&#xff09;的迅猛发展&#xff0c;这种技术结合了强大的语言模型与信…

百倍潜力股Aleo即将上线,布局正当时!牛市来时,你得有币!

前言 在加密货币市场&#xff0c;2024年被众多市场专家预测为迎来新一轮牛市的关键年份。这一预测背后&#xff0c;潜藏着多种可能推动牛市的因素。其中&#xff0c;下一次比特币&#xff08;BTC&#xff09;的减半事件&#xff0c;以及2024年 BTC 现货ETF的推出&#xff0c;都…

python统计分析——直方图(sns.histplot)

使用seanborn.histplot()函数绘制直方图 from matplotlib.pyplot as plt import seaborn as snsdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) &#xff08;1&#xff09;dataNone, 表示数据源。 &#xff08;2&#xff09;xNone, 表示直方图的分布垂直与x轴…

UG装配-爆炸图

当我们将零件装配成总成的时候&#xff0c;通常需要绘制爆炸图来说明总成零件组成&#xff0c;需要用到爆炸图命令&#xff0c;首先点击新建爆炸&#xff0c;然后为爆炸图命名 然后我们可以选择编辑爆炸或者自动爆炸&#xff1a; 编辑爆炸是通过手动的方式选择部件&#xff0c…