当前位置: 首页 > 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")
)

效果展示

http://www.lryc.cn/news/404816.html

相关文章:

  • ES中的数据类型学习之Aggregate metric(聚合计算)
  • 看准JS逆向案例:webpack逆向解析
  • 【C语言】 利用栈完成十进制转二进制(分文件编译,堆区申请空间malloc)
  • 如何解决ChromeDriver 126找不到chromedriver.exe问题
  • Anaconda下安装配置Jupyter
  • 蓝队黑名单IP解封提取脚本
  • 共享充电桩语音ic方案,展现它的“说话”的能力
  • ARM 单片机裸机任务调度框架
  • .Net 8 控制台程序部署(Linux篇)
  • LeetCode:x的平方根(C语言)
  • 深入浅出WebRTC—DelayBasedBwe
  • JAVA开发工具IDEA如何连接操作数据库
  • 简化AI模型:PyTorch量化技术在边缘计算中的应用
  • 拥抱AI时代:解锁Prompt技术的无限潜力与深远影响
  • 第123天:内网安全-域防火墙入站出站规则不出网隧道上线组策略对象同步
  • 博客建站4 - ssh远程连接服务器
  • MySQL--索引(3)
  • sql_exporter通过sql收集业务数据并通过prometheus+grafana展示
  • pytorch 笔记:torch.optim.Adam
  • 开源AI智能名片小程序:深度剖析体验优化策略,激活小程序生命力的运营之道
  • ML.Net 学习之使用经过训练的模型进行预测
  • 为什么 centos 下使用 tree 命令看不见 .env 文件
  • 数据库基础与性能概述及相关术语
  • docker基于外部缓存加速构建方案
  • 【C语言】 作业11 链表+实现函数封装
  • 【Ubuntu】Ubuntu20修改MAC地址
  • ClickHouse集成LDAP实现简单的用户认证
  • C语言-预处理详解
  • 计算机网络-VLAN间通信(三层通信)模拟实现
  • 【JAVA】数据类型及变量