# pythonHomeWork **Repository Path**: ruolin1314/mid-work ## Basic Information - **Project Name**: pythonHomeWork - **Description**: Python网络爬虫技术(2025年秋季学期)作业 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-29 - **Last Updated**: 2025-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 招聘数据爬取与可视化系统文档 ## 1. 系统概述 本系统实现了招聘数据的自动爬取、存储和可视化展示功能,包含以下核心模块: - 数据采集:从BOSS直聘网站抓取职位信息 - 数据存储:使用MySQL数据库持久化存储招聘信息 - 数据可视化:通过柱状图展示各城市岗位分布情况 ## 2. 核心代码解析 ### 2.1 [getData.py] - 数据采集模块 ```python import requests import json from dbUtil import db ``` 导入必要的库,包括请求处理、JSON解析和数据库连接模块。 ```python headers = { "user-agent":"...", "referer":"...", "cookie":"..." } ``` 配置请求头信息,包含用户代理、来源页面和认证Cookie。 ```python job = input("请输入查询的工作:") citya = input("请输入查询的地点:") ``` 获取用户输入的查询条件。 ```python cityDic = {"全国":"100010000",...} ``` 城市名称到城市编码的映射字典。 ```python url = "..."+job+"&city="+city+"..." ``` 构造API请求URL。 ```python resp = requests.get(url, headers=headers) text = json.loads(resp.content.decode()) ``` 发送HTTP请求并解析响应JSON数据。 ```python data = text["zpData"]["jobList"] cursor = db.cursor() for i in data: sql = '''insert into s_job values(null,'%s','%s','%s','%s','%s','%s')''' try: cursor.execute(sql) db.commit() except: print("数据有问题") db.rollback() ``` 将获取的数据写入数据库表`s_job`中。 ### 2.2 [dbUtil.py] - 数据库工具模块 ```python import pymysql db = pymysql.connect(...) ``` 创建数据库连接对象。 ### 2.3 [job.py] - 数据可视化模块 ```python from pyecharts.charts import Bar from pyecharts import options as opts ``` 导入图表生成库。 ```python def generate_job_chart(db): cursor = db.cursor() sql = """SELECT job_city, COUNT(*) AS job_count ...""" cursor.execute(sql) results = cursor.fetchall() ``` 执行SQL查询获取统计结果。 ```python bar = (Bar(init_opts=opts.InitOpts(...)) .add_xaxis(cities) .add_yaxis("岗位数量", counts) ...) ``` 构建柱状图。 ```python bar.render("job_statistics.html") ``` 生成HTML格式的可视化结果。 ## 3. 数据库设计 ### 表结构设计 ```sql CREATE TABLE `s_job` ( `id` int(11) NOT NULL AUTO_INCREMENT, `job_city` varchar(255) DEFAULT NULL, `company_name` varchar(255) DEFAULT NULL, `job_name` varchar(255) DEFAULT NULL, `education` varchar(255) DEFAULT NULL, `experience` varchar(255) DEFAULT NULL, `salary` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` ## 4. UML建模 ### 4.1 类图 ```uml @startuml class getData { +main() : void } class dbUtil { +connect() : Connection } class job { +generate_job_chart(Connection) : void } getData --> dbUtil : 使用 job --> dbUtil : 使用 @enduml ``` ### 4.2 用例图 ```uml @startuml actor 用户 用户 --> (输入查询条件) 用户 --> (查看数据) 用户 --> (查看可视化结果) (数据爬取) --> (存储数据) : <> (存储数据) --> (数据可视化) : <> (数据爬取) ..> dbUtil : 使用 (数据可视化) ..> dbUtil : 使用 note right of (数据爬取) 从BOSS直聘接口获取 职位信息数据 end note note right of (存储数据) 将获取的数据存入 MySQL数据库 end note note right of (数据可视化) 查询统计信息并 生成柱状图 end note @enduml ```