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

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

环境使用:

  • 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)

尾语

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

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

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

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

最近更新

  1. TCP协议是安全的吗?

    2024-01-08 21:14:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-08 21:14:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-08 21:14:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-08 21:14:02       20 阅读

热门阅读

  1. SQL注入是什么呢?

    2024-01-08 21:14:02       39 阅读
  2. Vue面试题

    2024-01-08 21:14:02       48 阅读
  3. 「HDLBits题解」Vector3

    2024-01-08 21:14:02       40 阅读
  4. Hive实战处理(二十三)hive整合phoenix

    2024-01-08 21:14:02       31 阅读
  5. 深入理解 Golang 中的值类型和引用类型

    2024-01-08 21:14:02       41 阅读
  6. 什么是CHATGPT

    2024-01-08 21:14:02       35 阅读
  7. 【Istio】安装Istio1.20.1

    2024-01-08 21:14:02       38 阅读
  8. Trino:分区表上的SQL提交 & 查询流程浅析

    2024-01-08 21:14:02       35 阅读
  9. HarmonyOS@Extend装饰器:定义扩展组件样式

    2024-01-08 21:14:02       34 阅读
  10. DDD领域驱动设计(六)

    2024-01-08 21:14:02       39 阅读
  11. JDBC-常用API

    2024-01-08 21:14:02       41 阅读
  12. 笨蛋学设计模式创建者模式-单例模式【2】

    2024-01-08 21:14:02       30 阅读
  13. Django5+DRF入门教程

    2024-01-08 21:14:02       39 阅读