Python采集招聘数据信息(+详情页)并实现可视化

本文由青灯教育-自游老师提供,介绍如何使用Python 3.8和Pycharm进行数据采集。讲解了通过requests库发送请求、解析网页数据,特别是应对反爬策略,并使用re和csv模块处理数据。最后,文章展示了如何进行数据可视化,包括安装和配置Pycharm的Python解释器、安装插件的方法。
摘要由CSDN通过智能技术生成


本篇代码提供者: 青灯教育-自游老师


[环境使用]:

  • Python 3.8
  • Pycharm

[模块使用]:

  • requests >>> pip install requests
  • re
  • json
  • csv

如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

  2. 点击齿轮, 选择add

  3. 添加python安装路径


pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

  3. 选择相应的插件点击 install(安装) 即可

  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效


基本流程思路: <可以通用>

一. 数据来源分析

网页开发者工具进行抓包分析…

  1. F12打开开发者工具, 刷新网页
  2. 通过关键字进行搜索, 找到相应的数据, 查看response响应数据
  3. 确定数据之后, 查看headers确定请求url地址 请求方式 以及 请求参数

二. 代码实现过程:

  1. 发送请求, 用python代码模拟浏览器对于url地址发送请求
  2. 获取数据, 获取服务器返回response响应数据
  3. 解析数据, 提取我们想要招聘信息数据
  4. 保存数据, 保存到表格文件里面

代码

导入模块

# 导入数据请求模块
import requests
# 导入正则表达式模块
import re
# 导入json模块
import json
# 导入格式化输出模块
import pprint
# 导入csv模块
import csv
# 导入时间模块
import time
# 导入随机模块
import random
# 有没有用utf-8保存表格数据,乱码的?
源码、解答、教程可加Q裙:832157862免费领取
f = open('data多页_1.csv', mode='a', encoding='utf-8', newline='')  # 打开一个文件 data.csv
csv_writer = csv.DictWriter(f, fieldnames=[
    '职位',
    '城市',
    '经验',
    '学历',
    '薪资',
    '公司',
    '福利待遇',
    '公司领域',
    '公司规模',
    '公司类型',
    '发布日期',
    '职位详情页',
    '公司详情页',
])
csv_writer.writeheader()

1. 发送请求,

用python代码模拟浏览器对于url地址发送请求

不要企图一节课, 掌握所有内容, 要学习听懂思路, 每一步我们为什么这么做…
知道headers 1
不知道headers 2

headers 请求头, 作用伪装python代码, 伪装成浏览器
字典形式, 构建完整键值对

如果当你headers伪装不够的时候, 你可能会被服务器识别出来, 你是爬虫程序, 从而不给你相应的数据内容

for page in range(1, 15):
    print(f'正在采集第{page}页的数据内容')
    time.sleep(random.randint(1, 2))
    url = f'https://search.51job.com/list/010000%252C020000%252C030200%252C040000%252C090200,000000,0000,00,9,99,python,2,{page}.html'
    headers = {
   
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
    print(response)  # <Response [200]> 响应对象
    源码、解答、教程可加Q裙:832157862免费领取

2. 获取数据

得到数据, 不是你想要数据内容, 你可能是被反爬了, 要多加一些伪装 <小伏笔>

# print(response.text)  字符串数据类型

3. 解析数据, 提取我们想要数据内容

re.findall() 就是从什么地方去找什么样数据内容

[0] 表示提取列表里面第一个元素 —> list index out of range 所以你的列表是空列表

用正则表达式/css/xpath提取数据返回是空列表 —> 1. 你语法写错 2. response.text 没有你想要数据

—> 是不是被反爬(验证码 需要登陆) 是不是headers参数给少了 是不是被封IP

    html_data = re.findall('window.__SEARCH_RESULT__ = (.*?)</script>', response.text)[0]
    # print(html_data)
    json_data = json.loads(html_data)
    # pprint.pprint(json_data)
    # 通过字典取值方法 把职位信息列表提取出来, 通过for循环遍历一个一个提取职位信息
    for index in json_data['engine_jds']:
        # 根据冒号左边的内容, 提取冒号右边的内容
        # pprint.pprint(index)
        try:
            dit = {
   
                '职位': index['job_title'],
                '城市': index['attribute_text'][0],
                '经验': index['attribute_text'][1],
                '学历': index['attribute_text'][2],
                '薪资': index['providesalary_text'],
                '公司': index['company_name'],
                '福利待遇': index['jobwelf'],
                '公司领域': index['companyind_text'],
                '公司规模': index['companysize_text'],
                '公司类型': index['companytype_text'],
                '发布日期': index['issuedate'],
                '职位详情页': index['job_href'],
                '公司详情页': index['company_href'],
                源码、解答、教程可加Q裙:832157862免费领取
            }
            csv_writer.writerow(dit)
            print(dit)
        except:
            pass

详情页数据

----> 爬虫基本思路是什么?

数据来源分析

请求响应 请求那个网站呢? 网址是什么 请求方式是什么 请求参数要什么?

发送请求 —> 获取数据 —> 解析数据 —> 保存数据

导入模块

import requests
import parsel
url = 'https://jobs.51job.com/shanghai-jdq/137393082.html?s=sou_sou_soulb&t=0_0'
headers = {
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
}
response = requests.get(url=url, headers=headers)
response.encoding = response.apparent_encoding  # 自动识别编码
print(response.text)
selector = parsel.Selector(response.text)
content_1 = selector.css('.cn').get()
content_2 = selector.css('.tCompany_main').get()
content = content_1 + content_2
# 文件名 公司名字 + 职位名字
with ope
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种功能强大的编程语言,广泛应用于数据分析领域。而Spring Boot是一种Java开发框架,用于构建快速、高效的后端接口。结合这两个技术,我们可以实现招聘信息可视化分析。 首先,我们需要收集和处理招聘信息数据。可以使用Python的网络爬虫库去爬取各大招聘网站上的数据,并存储到数据库中。为了方便存储和查询,可以选择使用MySQL或者MongoDB等数据库。 接下来,我们可以使用Python中的数据处理和分析库,例如Pandas和Numpy,对招聘数据进行清洗和整理。去除重复数据、格式化数据等,确保数据的准确性和一致性。 然后,我们可以使用Python数据可视化库,如Matplotlib和Seaborn,来创建图表和可视化工具,将招聘信息进行可视化展示。可以根据需求绘制各种图表,例如饼图、线图、柱形图等,展示各种招聘信息的分布和趋势。 此外,借助Spring Boot的接口开发能力,我们可以将这些数据可视化的图表和工具嵌入到一个Web应用中。通过编写接口,前端页面可以从后端获取招聘数据并调用数据可视化工具,将结果以图表的形式展示给用户。用户可以通过搜索、过滤等方式与数据进行交互,从而获得更加丰富和深入的招聘信息。 总之,结合Python数据分析和Spring Boot接口开发,我们可以实现招聘信息可视化展示。这有助于招聘人员和求职者更好地了解当前的招聘市场,提供决策支持和参考。同时,也提升了用户对招聘信息可视化分析能力,帮助他们更好地了解行业动态和就业趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值