logo
0
0
WeChat Login

数据处理工程师 - 上机实战题 (简易版)

1. 题目背景

我们需要对目标法律法规数据库进行全量结构化采集。该网站采用了经典的“左侧导航树 - 右侧内容区”布局。你的任务是分别采集这两部分数据,并以本地文件形式规范存储。

爬取网站

目标参考:

  • 左侧: 数据库分类目录(树状结构)
  • 右侧: 具体的法规列表及详情内容

2. 环境要求

  • Python: 3.11+ (请使用标准库或常用第三方库)
  • Storage: 本地文件存储 (CSV & JSON),无需安装数据库

3. 任务详情

任务 A:左侧目录树采集 (The Navigator)

目标: 抓取左侧的“数据库导航树”,并保留其层级结构。

技术要求:

  1. 层级遍历: 目录可能包含多级(如:全部数据库 -> 地方法律 -> 云南省)。请设计程序遍历抓取所有节点。
  2. 树状存储 (JSON): 将抓取到的目录结构保存为 categories.json 文件。
    • 格式要求:嵌套的 JSON 对象,体现父子关系。
    • 示例结构:
      [ { "id": "1001", "name": "更新法规库", "children": [] }, { "id": "1002", "name": "地方法律与规章库", "children": [ { "id": "2001", "name": "云南省", "children": [...] } ] } ]

任务 B:右侧数据采集 (The Harvester)

目标: 针对左侧选中的某个特定分类(例如图中显示的“更新法规库”),采集其右侧列表下的前 20页 数据。

技术要求:

  1. 详情页解析:
    • 需进入详情页,解析截图中间红色的元数据区块
    • 必须提取的字段: 标题、发布日期、时效性、发文号、发布单位、正文内容(去标签纯文本)。
  2. 清洗逻辑:
    • 日期格式化:2026.01.20 等格式统一清洗为 YYYY-MM-DD
    • 空值处理: 如果某些字段为空,需填入默认值或留空。

任务 C:本地持久化 (File Storage)

目标: 将任务 B 采集到的数据分别保存为两种格式,考察对文件系统的操作能力。

要求:

  1. CSV 导出 (regulations.csv):
    • 适用于制表分析。
    • 包含字段:标题, 发布日期, 发文号, 发布单位, 所属目录ID
    • 注意: 必须处理 CSV 格式中的特殊字符(如标题中包含逗号、换行符)导致的错位问题,建议使用 Python csv 模块。
  2. JSON 导出 (regulations.json):
    • 适用于完整备份。
    • 每一行是一个完整的 JSON 对象(JSON Lines 格式,或整个列表为一个 JSON)。
    • 必须包含所有字段,以及一个 meta_info 字段(存放红色区域解析出的所有原始键值对字典)。

4. 交付清单

  1. Python 源码 (main.py 等)。
  2. 结果文件样例
    • categories.json
    • regulations.csv
    • regulations.json
  3. README.md(简述运行方法及第三方库依赖)。

About

No description, topics, or website provided.