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

Python实现招聘数据采集 ,并做可视化分析

转眼秋招快到了, 今天来学习一下如何用Python采集全网招聘数据,并进行可视化分析,为就业准备~

话不多说开始造

源码和详细的视频讲解我都打包好了,文末名片自取

准备工作

首先你需要准备这些

环境

Python 3.10
Pycharm

模块
DrissionPage -> pip install DrissionPage
csv

新建一个临时 py 文件,并输入以下代码,填入您电脑里的 Chrome 浏览器可执行文件路径,然后运行。

from DrissionPage import ChromiumOptionspath = r'D:\Chrome\Chrome.exe' # 请改为你电脑内Chrome可执行文件路径
ChromiumOptions().set_browser_path(path).save()

爬虫实现的基本流程

一、数据来源分析

1.明确需求

明确采集的网站以及数据内容

  • 网址: https://****/web/geek/job?query=python&city=100010000
  • 数据: 职位信息
2.抓包分析

通过浏览器开发者工具分析对应的数据位置

  • 打开开发者工具
    • F12 / 右键点击检查选择 network (网络)
  • 刷新网页
  • 通过关键字搜索找到对应的数据位置
    • 关键字: 需要什么数据就搜什么数据

数据包地址:
https://***/wapi/zpgeek/search/joblist.json?scene=1&query=pyth
on&city=100010000&experience=&payType=&partTime=°ree=&industry=&scale=&stage=&p
osition=&jobType=&salary=&multiBusinessDistrict=&multiSubway=&page=1&pageSize=30

二、代码实现步骤

requests基本实现步骤基本步骤分为四步:

1.发送请求: 模拟浏览器对于url地址发送请求
2.获取数据: 获取服务器返回响应数据
3.解析数据: 提取我们需要的数据内容
4.保存数据: 提取的数据保存表格/文本/数据库/json文件中

为什么不选择使用requests去请求获取数据呢?

某些网站数据内容(请求), 存在加密内容->需要JS逆向
比如: 今晚案例boss -> cookie 中 zp_stoken 时效性

drissionpage 自动化模块

模拟人的行为操作浏览器

  • 点击 输入 拖拽 获取数据

1.可以直接通过元素面板, 进行元素定位获取相关数据内容

2.可以直接监听数据, 获取响应数据
监听数据->在执行动作之前

注意细节:

a.需要配置浏览器可执行文件路径
b.通过抓包分析找到的数据包链接地址进行的监听, 并且监听数据->在执行动作之前

3.解析数据: 提取我们需要的数据内容
4.保存数据: 提取的数据保存表格/文本/数据库/json文件中

点击下一页按钮:

1.定位按钮元素
2.进行相关操作

dp.ele(‘css:.ui-icon-arrow-right’).click()
-dp.ele() 通过元素定位
-css:.ui-icon-arrow-right 使用css语法查找元素
-click() 点击操作

数据可视化

简单使用可视化

# 导入数据处理模块
import pandas as pd
# 导入配置项
from pyecharts import options as opts
# 导入图形
from pyecharts.charts import Pie, Bar, Line
# 导入数据(随机生成数据)
from pyecharts.faker import Faker# 读取csv文件
df = pd.read_csv('data.csv')
# print(df.head())
# 获取x轴数据内容
x_city = df['城市'].value_counts().index.to_list()
# 获取y轴数据内容
y_city = df['城市'].value_counts().to_list()c = (Pie().add("",[list(z)for z in zip(x_city, # x轴数据y_city, # y轴数据)],center=["40%", "50%"],).set_global_opts(# 设置可视化标题title_opts=opts.TitleOpts(title="Python招聘城市分布情况"),legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))# 导出可视化效果: 保存html文件.render("pie_Python招聘城市分布情况.html")
)
# 获取x轴数据内容
x_edu = df['学历'].value_counts().index.to_list()
# 获取y轴数据内容
y_edu = df['学历'].value_counts().to_list()
c_bar = (Bar().add_xaxis(x_edu).add_yaxis("学历", y_edu, stack="stack1").set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="Bar-Python招聘学历要求分布情况")).render("bar_Python招聘学历要求分布情况.html")
)# 获取x轴数据内容
x_exp = df['经验'].value_counts().index.to_list()
# 获取y轴数据内容
y_exp = df['经验'].value_counts().to_list()
c_Line = (Line().add_xaxis(x_exp).add_yaxis("经验", y_exp, is_connect_nones=True).set_global_opts(title_opts=opts.TitleOpts(title="Line-Python招聘经验要求分布")).render("line_Python招聘经验要求分布.html")
)

效果展示

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Gson使用TypeAdapterFactory和TypeAdapter实现Json中的Key统一修改
  • Web漏洞扫描工具(AWVS、Goby)
  • modulepreload 对性能的影响
  • spring部分源码分析及Bean的生命周期理解
  • ChatGPT:ChatOpenAI 是什么?
  • 计算机网络——1
  • 云动态摘要 2024-07-23
  • 为了实现接口缓存,专门写了个缓存库 f-cache-memory
  • 邮件安全篇:邮件反垃圾系统运作机制简介
  • 邮件安全篇:企业电子邮件安全涉及哪些方面?
  • 数据结构->线性结构->顺序存储->静态链表
  • Go 1.22 remote error: tls: handshake failure
  • windows10 安装CUDA教程
  • 【学习笔记】无人机系统(UAS)的连接、识别和跟踪(五)-无人机跟踪
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 堆内存申请(100分) - 三语言AC题解(Python/Java/Cpp)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【面试系列】之二:关于js原型
  • Angular Elements 及其运作原理
  • CSS中外联样式表代表的含义
  • Fabric架构演变之路
  • Git 使用集
  • java8 Stream Pipelines 浅析
  • javascript面向对象之创建对象
  • MobX
  • 不上全站https的网站你们就等着被恶心死吧
  • 两列自适应布局方案整理
  • 携程小程序初体验
  • 云大使推广中的常见热门问题
  • 怎样选择前端框架
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $.ajax()参数及用法
  • (Charles)如何抓取手机http的报文
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (汇总)os模块以及shutil模块对文件的操作
  • (七)理解angular中的module和injector,即依赖注入
  • (三)Honghu Cloud云架构一定时调度平台
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (万字长文)Spring的核心知识尽揽其中
  • (学习日记)2024.01.19
  • (转)http协议
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)OpenStack Hacker养成指南
  • .NET Framework 3.5安装教程
  • .NET 材料检测系统崩溃分析
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .Net程序帮助文档制作
  • .sdf和.msp文件读取
  • @AutoConfigurationPackage的使用
  • @Controller和@RestController的区别?
  • @Transactional 参数详解
  • @我的前任是个极品 微博分析
  • [ NOI 2001 ] 食物链