博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,选择我们,就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

点击查看作者主页,了解更多项目!

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、毕业设计:2026年计算机专业毕业设计选题汇总(建议收藏)✅

2、最全计算机专业毕业设计选题大全(建议收藏)✅

1、项目介绍

技术栈:Python语言、Flask框架、requests爬虫、Echarts可视化、MySQL数据库、Layui前端框架

研究背景:
拉勾网每日新增数万技术岗位,信息分散且更新快,求职者难以直观把握城市薪资与行业趋势,亟需自动化采集与可视化方案辅助择业。

研究意义:
本系统以requests实时抓取拉勾网招聘数据,经清洗后通过Echarts多维可视化,可为毕业生展示“爬虫-分析-预测”完整闭环,也可为HR提供薪酬调研工具,预计节省70%人工整理时间。


2、项目界面

(1)招聘企业分析
在这里插入图片描述

(2)全国招聘地图
在这里插入图片描述

(3)岗位分析词云图
在这里插入图片描述

(4)薪资预测模块
在这里插入图片描述

(5)招聘企业分析----融资情况
在这里插入图片描述

(6)招聘企业分析----类型
在这里插入图片描述

(7)薪资分析
在这里插入图片描述

(8)数据采集
在这里插入图片描述


3、项目说明

本系统使用Python进行创作,基于Flask框架实现Web功能,使用MySQL存储系统信息,结合ECharts进行数据可视化分析,数据获取通过requests对拉勾网进行爬取,获取的数据进行清洗处理后存储到MySQL数据库中,大致实现数据的爬取、系统管理和数据的可视化等模块。系统功能模块包括:首页可视化、招聘企业分析、全国招聘地图、岗位词云、薪资分析以及薪资预测模块。薪资预测模块支持通过选择职位、学历、城市、工作经验,使用随机森林算法预测期望薪资,为求职者提供量化参考。通过数据可视化展示,得出不同城市和行业的招聘信息数量与薪资水平存在明显差异,为个人求职者和企业招聘者提供有益参考。


4、核心代码



import os
import random
import math
from time import sleep
import json
from urllib.parse import quote
import requests
from fake_useragent import UserAgent

# 判断文件是否存在,否则创建新的
def mkdir(path):
    folder = os.path.exists(path)

    if not folder:
        os.makedirs(path)
        print(path + "文件夹创建成功")
    else:
        print("已存在")


def get_user_agent():
    user_agent = UserAgent()
    return user_agent.chrome

def get_page_num(count):
    """
    计算要抓取的页数,通过在拉勾网输入关键字信息,
    可以发现最多显示30页信息,每页最多显示15个职位信息
    :param count:
    :return:
    """
    page_num = math.ceil(count / 15)
    if page_num > 29:
        return 2
    # return 29
    else:
        return page_num


def get_json(job_name, page_num, city):
    """
    从指定的url中通过requests请求携带 请求头和请求体 获取返回
    :param city:
    :param job_name: 工作
    :param page_num: 第几页
    :return:
    """
    post_url = f"https://www.lagou.com/jobs/positionAjax.json?px=default&city={quote(city)}&needAddtionalResult=false"
    # job_q = quote(job_name)
    url_job = f"https://www.lagou.com/jobs/list_{job_name}?px=default&city={city}#filterBox"
    headers = get_headers(job_q=quote(job_name))

    # 请求体
    data = {
        "first": "true",
        "pn": page_num,
        "kd": job_name,
    }

    # 代理
    # proxy = my_proxy()     注释掉
    # proxy = get_proxies(url_job)
    #

    s = requests.Session()
    print("建立session:", s, "\n\n")
    s.get(url=url_job, headers=headers, timeout=10)
    # s.get(url=url_job, headers=headers, timeout=10, proxies=proxy)
    cookie = s.cookies
    print("获取cookie:", cookie, "\n\n")
    # 关闭 keep-alive
    headers['Connection'] = "close"
    res = requests.post(url=post_url, headers=headers, data=data, cookies=cookie, timeout=10)
    # res = requests.post(url=post_url, headers=headers, data=data, cookies=cookie, timeout=10, proxies=proxy)
    print(f"城市{city},工作{job_name}正在爬取第{page_num}页")
    res.raise_for_status()
    res.encoding = "utf-8"
    page_data = res.json()
    return page_data


def spider(job, city):
    """
    爬虫入口
    :param job:
    :param city:
    :return:
    """
    # 返回第一页json文件,方便查看有多少页数据,针对中断爬虫,继续爬取
    first_page = get_json(job_name=job, page_num=1, city=city)
    # job 页码数量 num
    num = get_page_num(first_page["content"]["positionResult"]["totalCount"])
    print(f"在城市{city},工作{job}可以爬取{num}页")

    # 已经爬取的数量
    sleep(5)
    # sleep(10)

    # 工作保存路径
    path_route = f"Data/{job}"
    mkdir(path_route)

    # 正式爬取
    for page in range(1, num + 1):
        # 获取每一页的职位的相关职位信息
        page_data = get_json(job_name=job, page_num=page, city=city)
        filename = path_route + "/" + city + job + str(page) + ".json"
        with open(filename, "w", encoding="utf-8") as f_obj:  # 打开模式为可写
            json.dump(page_data, f_obj, ensure_ascii=False)  # 存储文件

        sleep(20)


jobs = ["java", "python", "C++", "php", "web", "bi", "go", "ruby", "android", "ios", "算法", "测试", "运维", "数据库",
        "ai"]
cities = ["北京", "上海", "深圳", "广州", "杭州", "成都", "南京", "武汉"]

job_num = 0

p_job = jobs[job_num]
# 遍历城市
# 从第 n 个开始爬
n = 0
for i in range(n, len(cities)):
    c = cities[i]
    spider(job=p_job, city=c)
    sleep(5)
    # sleep(10)





🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目编程以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌

5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅

点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻

更多推荐