首页 > 编程语言 >简单的用Python采集猎聘招聘数据内容,并做可视化分析!

简单的用Python采集猎聘招聘数据内容,并做可视化分析!

时间:2023-07-19 18:55:06浏览次数:41  
标签:title Python list 猎聘 可视化 edu div type opts

现在刚毕业,很多小伙伴因为找不到工作或者找了很多也不喜欢,再有懒一点的,太热了根本不想出门到处找。

所以今天给大家分享如何在家就能找到心仪工作

使用Python批量采集招聘数据,进行可视化分析,轻松找到心仪工作!

话不多说,我们直接开始~

准备工作

软件工具

  • Python 3.8
  • Pycharm
  • 谷歌浏览器
  • 谷歌驱动

selenium --> 自动化测试模块
模拟人的行为去操作浏览器

手动操作

  1. 打开浏览器
  2. 输入网址
  3. 找到我们需要的数据内容
  4. 手动复制粘贴放到表格文件

模块使用

selenium  # pip install selenium==3.141.0 自动化测试 操作浏览器
csv  # 保存数据 保存csv文件

 

win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

数据获取部分代码

打开浏览器

浏览器驱动选择以及下载:

  • 查看浏览器版本
  • 驱动版本选择和你浏览器版本最相近的
  • 驱动文件<不需要双击安装>, 直接放到你python安装目录里面

主要代码

driver = webdriver.Chrome()
# 访问网站
# 完整代码+视频讲解+软件工具领取
# 直接加这个抠裙:592539176
driver.get(
    'https://www.liepin.com/zhaopin/?inputFrom=www_index&workYearCode=0&key=python&scene=input&ckId=rn8762mqhk78fi3d9fiqzzoobk7f66u9&dq=')
"""
找到我们需要的数据内容
    前提 -> 你要让网页元素<数据>加载出来
    通过元素定位, 获取数据内容 <通过标签提取数据> 
"""
# 设置延时, 让网页元素加载完整
driver.implicitly_wait(10)  # 隐式等待, 只要网页加载出来就运行下面的代码
time.sleep(1)  # 死等, 一定要等够
# 获取所有招聘信息对应div标签
divs = driver.find_elements_by_css_selector('.job-list-box div .job-card-left-box')
# print(driver) # webdriver.Chrome() 返回selenium对象
# print(divs)  # 返回列表, 列表里面元素是selenium对象
for div in divs:
    """
    提取具体数据内容, 提取每个div标签里面所包含的数据内容
        .job-title-box div.ellipsis-1
    """
    # 职位
    title = div.find_element_by_css_selector('.job-title-box div.ellipsis-1').text
    # 城市
    city = div.find_element_by_css_selector('.job-title-box span.ellipsis-1').text
    salary = div.find_element_by_css_selector('.job-salary').text
    # 列表推导式
    info_list = [i.text for i in div.find_elements_by_css_selector('.job-labels-box .labels-tag')]
    print(info_list)
    exp = info_list[0]
    edu = info_list[1]
    labels = ','.join(info_list[2:])
    company = div.find_element_by_css_selector('.company-name').text
    company_type = div.find_element_by_css_selector('.company-tags-box span').text
    company_num = div.find_element_by_css_selector('.company-tags-box span:last-of-type').text
    href = div.find_element_by_css_selector('.job-detail-box a').get_attribute('href')
    dit = {
        '职位': title,
        '城市': city,
        '薪资': salary,
        '经验': exp,
        '学历': edu,
        '技术点': labels,
        '公司': company,
        '公司领域': company_type,
        '公司规模': company_num,
        '详情页': href,
    }
    csv_writer.writerow(dit)
    print(dit)

 

保存表格

f = open('python.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '职位',
    '城市',
    '薪资',
    '经验',
    '学历',
    '技术点',
    '公司',
    '公司领域',
    '公司规模',
    '详情页',
])
csv_writer.writeheader()

 

可视化展示

读取文件

import pandas as pd

df = pd.read_csv('data.csv')
df.head()

 

python职位学历需求分布

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
c = (
    Pie()
    .add(
        "",
        [
            list(z)
            for z in zip(
                edu_type,
                edu_num,
            )
        ],
        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}"))
    
)
c.load_javascript()

 

python职位学历需求分布

edu_num = df['经验'].value_counts().to_list()
edu_type = df['经验'].value_counts().index.to_list()
c = (
    Pie()
    .add(
        "",
        [
            list(z)
            for z in zip(
                edu_type,
                edu_num,
            )
        ],
        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}"))
    
)
c.render_notebook()

 

python职位城市分布

edu_num = df['城市'].str[:2].value_counts().to_list()
edu_type = df['城市'].str[:2].value_counts().index.to_list()
c = (
    Pie()
    .add(
        "",
        [
            list(z)
            for z in zip(
                edu_type,
                edu_num,
            )
        ],
        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}"))
    
)
c.render_notebook()

 

python公司领域分布

edu_num = df['公司领域'].value_counts().to_list()
edu_type = df['公司领域'].value_counts().index.to_list()
c = (
    Pie()
    .add(
        "",
        [
            list(z)
            for z in zip(
                edu_type,
                edu_num,
            )
        ],
        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}"))
    
)
c.render_notebook()

 

好了今天的分享就到这结束了,咱们下次再见!

标签:title,Python,list,猎聘,可视化,edu,div,type,opts
From: https://www.cnblogs.com/hahaa/p/17566494.html

相关文章

  • 怎么用python打印文件夹
    如何使用Python打印文件夹中的内容在日常开发中,经常会遇到需要遍历文件夹并打印出其中的文件或目录的情况。Python提供了许多方法来处理文件和文件夹,使我们能够轻松地实现这个功能。方案概述我们可以使用Python的os模块来遍历文件夹并打印出其中的内容。os模块提供了许多函数来......
  • 怎么把java转成python
    如何将Java代码转换为Python代码在软件开发中,经常会遇到需要将一个编程语言的代码转换为另一种编程语言的代码的情况。本文将介绍如何将Java代码转换为Python代码,并使用一个实际问题来演示这个过程。假设我们需要解决一个实际的问题:给定一个整数数组,我们需要编写一个函数来计算数......
  • 关于module:undefined symbol:PyExc_ImportError在C语言中嵌入Python时
    cimporterrormakefilemodulepython-2.7undefinedsymbol:PyExc_ImportErrorwhenembeddingPythoninC 我正在开发一个C共享库,该库可以调用python脚本。当我运行应用程序时,出现以下错误:12345678910Traceback (mostrecentcalllast): File"/home/ubuntu......
  • AliOSS python 批量上传文件
    AliOSSPython批量上传文件简介AliOSS是阿里云提供的一种对象存储服务,可以用于存储和管理大量的非结构化数据。在Python中,我们可以使用AliOSSSDK来快速地上传多个文件到AliOSS。本文将介绍如何使用AliOSSPythonSDK来批量上传文件到AliOSS,并提供代码示例来说明具体的操作步骤......
  • AR模型定阶Python
    实现AR模型定阶Python1.概述在时间序列分析中,AR模型(自回归模型)是一种常用的预测方法。它基于过去一段时间内的数据,利用线性回归的方法来预测未来的值。AR模型的核心思想是当前时间点的值与过去若干时间点的值相关。在本文中,我们将介绍如何实现AR模型定阶的过程。AR模型定阶是指......
  • Linux安装新版本Python3.9.0
    Linux自带的python版本过低,无法满足需要,遂安装一个Python3.9。在Linux系统上安装新版本的Python,可以通过以下步骤进行操作:1.下载新版本前往Python官方网站(https://www.python.org/downloads/source/),选择适合你的系统的最新版本的源代码进行下载。解压源代码包。使用命令行......
  • python中for循环无法删除全部成员
    积涓流之势,成汪洋之姿。对于列表这种数据容器,对其中元素进行筛选并处理时很容易想到用for循环去逐个处理,还可以叠加上判断语句逐一对列表中的成员进行判断。介于此,我在遍历列表元素进行判断删除时出现了如下场景: 问题代码:(s1,s2,s3这三个变量的此时的值为"","","hello-wor......
  • python
    目录fastapifastapi下载fastapi依包赖pipinstallfastapi-ihttps://mirrors.aliyun.com/pypi/simple因为fastapi启动依赖于uvicorn,所以我们还需要安装uvicorn。pipinstalluvicorn-ihttps://mirrors.aliyun.com/pypi/simple提供api访问路径验证`fromfastapii......
  • python序列
    *鉴于序列协议的重要性,如果没有__iter__和__contains__方法,Python会调用__getitem__方法,设法让迭代和in运算符可用。#猴子补丁当一个类中缺少某个内置方法导致出现不可迭代或者是不可变对象的时候,可以在类的外面定义一个函数,用这个函数给类打补丁。 ......
  • centos系统中python3 import tkinter报错解决方法
    本人运行的环境是Centos7.9+Python3.6,运行脚本中包含importtkinter。报错如下图: 原因是Linux环境下Python环境没有内置tkinter模块(在windows环境是内置好的,可以直接用)解决方法为手动安装tkinter模块1yuminstallpython3-tkinter安装完成后,再运行tkinter代码就成功了。......