数据采集,托育机构信息公示平台,托育机构信用公示名单
https://tuoyu.cpdrc.org.cn/#/ https://tuoyu.cpdrc.org.cn/bapfopm/pub/search/action/queryInfo?pageSize=10&pageNum=2
|
|
6 달 전 | |
|---|---|---|
| src | 6 달 전 | |
| .gitignore | 6 달 전 | |
| README.md | 6 달 전 | |
| pom.xml | 6 달 전 |
从托育机构信息平台 (tuoyu.cpdrc.org.cn) 爬取数据并导出为 Excel 文件的 Java 爬虫工具。
# 编译
mvn compile
# 运行
mvn exec:java -Dexec.mainClass=space.anyi.app.Application
运行后会在项目根目录生成 data.xlsx 文件。
| 依赖 | 版本 |
|---|---|
| JDK | 21+ |
| Maven | 3.6+ |
数据已成功保存到Excel文件: data.xlsx
共保存 XXX 条记录
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 启动程序 │────▶│ 请求第1页 │────▶│ 获取总页数 │────▶│ 遍历所有页 │
│ (pageSize= │ │ 获取总数 │ │ 解析响应 │ │ 100ms 间隔 │
│ 10,page=1)│ │ 解析响应 │ │ 决定循环次数 │ │ 累积数据 │
└─────────────┘ └─────────────┘ └─────────────┘ └──────┬──────┘
│
┌────▼─────┐
│ 生成 Excel │
│ data.xlsx │
└──────────┘
| 项 | 值 |
|---|---|
| 目标网站 | https://tuoyu.cpdrc.org.cn/ |
| API 地址 | https://tuoyu.cpdrc.org.cn/bapfopm/pub/search/action/queryInfo?pageSize={n}&pageNum={n} |
| 请求方式 | GET |
| 分页策略 | 首次请求获取总页数,然后逐页遍历 |
| 请求间隔 | 100ms(防止请求过快) |
{
"code": 200,
"message": "success",
"responseData": {
"dataList": [
{
"institution_name": "XX托育中心",
"institution_other_name": "XX早教",
"institution_type": "全日制",
"credit_code": "91XXXXXXXXXXXXXXXX",
"address": "XX省XX市XX区XX路XX号",
"zoning_name": "XX区",
"zoning_code": "110101",
"finished_time": "2024-01-01"
}
],
"totalPage": 50,
"totalRecord": 500,
"pageSize": 10,
"pageIndex": 1,
"offset": 0
}
}
| 列名 | 说明 | JSON 键 |
|---|---|---|
| 机构名称 | 托育机构正式名称 | institution_name |
| 机构别名 | 机构其他名称 | institution_other_name |
| 机构类型 | 机构所属分类 | institution_type |
| 信用代码 | 统一社会信用代码 | credit_code |
| 地址 | 机构详细地址 | address(直接匹配) |
| 所在区域 | 行政区划名称 | zoning_name |
| 区域代码 | 行政区划代码 | zoning_code |
| 完成时间 | 数据录入/完成时间 | finished_time |
src/main/java/space/anyi/app/
├── Application.java # 入口:发起请求 → 解析 → 导出 Excel
└── model/
├── Institution.java # DTO:机构数据实体,使用 @JsonProperty 映射
├── Response.java # API 响应信封:code, message, responseData
└── ResponseData.java # 分页数据包装:dataList, totalPage, totalRecord 等
Response
├── code (int)
├── message (String)
└── responseData (ResponseData)
├── dataList (List<Institution>)
├── totalPage (Integer)
├── totalRecord (Integer)
├── pageSize (Integer)
├── pageIndex (Integer)
└── offset (Integer)
| 组件 | 版本 | 用途 |
|---|---|---|
| Jackson Databind | 2.21.2 | JSON 反序列化 |
| Apache POI | 5.5.1 | Excel 文件生成 |
| Java HttpClient | JDK 内置 | HTTP 请求 |
| 命令 | 说明 |
|---|---|
mvn compile |
编译项目 |
mvn exec:java -Dexec.mainClass=space.anyi.app.Application |
运行爬虫 |
mvn clean |
清理构建产物 |
data.xlsx 不在 .gitignore 中,请勿提交HSSFWorkbook 生成的是旧版 .xls 二进制格式,扩展名虽为 .xlsx,实际需用 Excel 兼容模式打开.xlsx 格式,需替换为 XSSFWorkbook 并添加 poi-ooxml 依赖mvn exec:java 依赖 Maven 默认插件解析,pom.xml 中未显式配置 exec-maven-plugin确保已正确安装 Maven 并能访问中央仓库。可尝试:
mvn clean install
程序使用 HSSF 格式生成的是 .xls 格式文件。用 Excel 打开时可能会提示格式不匹配,点击"是"即可正常打开。如需真正的 .xlsx 格式,请参考 格式升级 说明。
修改 Application.java 中的 pageSize 变量即可:
int pageSize = 20; // 改为每页20条
注意:过大的 pageSize 可能导致请求超时。