```
feat(readme): 对部分文本进行格式调整,包括金额数字空格分隔、API 参数说明优化、标题层级对齐等,提升可读性。 ```
This commit is contained in:
108
README.md
108
README.md
@@ -1,17 +1,17 @@
|
||||
# 南京公共工程建设中心 - 公告抓取工具
|
||||
# 南京公共工程建设中心 - 公告采集工具
|
||||
|
||||
一个用于抓取南京公共工程建设中心公告信息的 Web 可视化工具。
|
||||
一个用于采集南京公共工程建设中心公告信息的 Web 可视化工具。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- ✅ 抓取公告列表(支持分页)
|
||||
- ✅ 按时间范围智能抓取
|
||||
- ✅ 抓取公告详情内容
|
||||
- ✅ 采集公告列表(支持分页)
|
||||
- ✅ 按时间范围智能采集
|
||||
- ✅ 采集公告详情内容
|
||||
- ✅ 智能提取预算金额
|
||||
- ✅ 生成统计报告
|
||||
- ✅ Web可视化界面
|
||||
- ✅ 导出Word/Markdown报告
|
||||
- ✅ RESTful API支持
|
||||
- ✅ Web 可视化界面
|
||||
- ✅ 导出 Word/Markdown 报告
|
||||
- ✅ RESTful API 支持
|
||||
|
||||
## 安装
|
||||
|
||||
@@ -34,21 +34,24 @@ npm start
|
||||
### 3. 功能介绍
|
||||
|
||||
**公告列表标签**
|
||||
|
||||
- 快速查看所有公告
|
||||
- 支持分页浏览
|
||||
- 一键获取最新公告列表
|
||||
|
||||
**详情抓取标签**
|
||||
- 批量抓取公告详情
|
||||
- 支持按时间范围抓取
|
||||
**详情采集标签**
|
||||
|
||||
- 批量采集公告详情
|
||||
- 支持按时间范围采集
|
||||
- 自动提取预算金额
|
||||
- 可自定义抓取数量
|
||||
- 可自定义采集数量
|
||||
|
||||
**生成报告标签**
|
||||
|
||||
- 支持按时间范围生成报告
|
||||
- 设置金额阈值筛选项目
|
||||
- 实时统计项目信息
|
||||
- 一键导出Word/Markdown报告
|
||||
- 一键导出 Word/Markdown 报告
|
||||
|
||||
## 报告示例
|
||||
|
||||
@@ -60,8 +63,8 @@ npm start
|
||||
## 统计摘要
|
||||
|
||||
- 总项目数: 10
|
||||
- 超过50万元的项目: 3
|
||||
- 总金额: 5395.50万元
|
||||
- 超过 50 万元的项目: 3
|
||||
- 总金额: 5395.50 万元
|
||||
|
||||
## 项目列表
|
||||
|
||||
@@ -69,7 +72,7 @@ npm start
|
||||
|
||||
- **发布日期**: 2025-12-12
|
||||
- **发布时间**: 2025-12-12 10:35:00
|
||||
- **预算金额**: 5000万元
|
||||
- **预算金额**: 5000 万元
|
||||
- **链接**: https://...
|
||||
```
|
||||
|
||||
@@ -78,14 +81,18 @@ npm start
|
||||
服务器启动后提供以下 RESTful API 接口:
|
||||
|
||||
### 1. 获取公告列表
|
||||
|
||||
```
|
||||
GET /api/list?url=<列表页URL>&page=<页码>
|
||||
```
|
||||
|
||||
参数:
|
||||
- `url` (可选): 列表页URL,默认为官网首页
|
||||
- `page` (可选): 页码,默认为1
|
||||
|
||||
- `url` (可选): 列表页 URL,默认为官网首页
|
||||
- `page` (可选): 页码,默认为 1
|
||||
|
||||
### 2. 按时间范围获取列表
|
||||
|
||||
```
|
||||
POST /api/list-daterange
|
||||
Content-Type: application/json
|
||||
@@ -98,6 +105,7 @@ Content-Type: application/json
|
||||
```
|
||||
|
||||
### 3. 批量获取详情
|
||||
|
||||
```
|
||||
POST /api/details
|
||||
Content-Type: application/json
|
||||
@@ -109,6 +117,7 @@ Content-Type: application/json
|
||||
```
|
||||
|
||||
### 4. 生成报告
|
||||
|
||||
```
|
||||
POST /api/report
|
||||
Content-Type: application/json
|
||||
@@ -121,6 +130,7 @@ Content-Type: application/json
|
||||
```
|
||||
|
||||
### 5. 按时间范围生成报告
|
||||
|
||||
```
|
||||
POST /api/report-daterange
|
||||
Content-Type: application/json
|
||||
@@ -137,8 +147,8 @@ Content-Type: application/json
|
||||
|
||||
- **后端**: Node.js + Express
|
||||
- **爬虫**: Axios + Cheerio
|
||||
- **前端**: 原生HTML/CSS/JavaScript
|
||||
- **编码处理**: iconv-lite (支持GBK/UTF-8)
|
||||
- **前端**: 原生 HTML/CSS/JavaScript
|
||||
- **编码处理**: iconv-lite (支持 GBK/UTF-8)
|
||||
- **文档导出**: docx.js
|
||||
|
||||
## 项目结构
|
||||
@@ -156,61 +166,69 @@ Content-Type: application/json
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 抓取速度已限制为每条延迟500ms-1s,避免请求过快
|
||||
1. 采集速度已限制为每条延迟 500ms-1s,避免请求过快
|
||||
2. 仅支持 gjzx.nanjing.gov.cn 域名的详情页解析
|
||||
3. 金额提取基于正则匹配,支持多种格式(预算金额、最高限价等)
|
||||
4. Web服务器默认端口3000,可在 server.js 中修改
|
||||
5. 按时间范围抓取会在检测到所有公告早于起始日期时自动停止
|
||||
6. 编码自动识别,支持GBK和UTF-8网页
|
||||
4. Web 服务器默认端口 3000,可在 server.js 中修改
|
||||
5. 按时间范围采集会在检测到所有公告早于起始日期时自动停止
|
||||
6. 编码自动识别,支持 GBK 和 UTF-8 网页
|
||||
|
||||
## 核心功能说明
|
||||
|
||||
### 时间范围抓取逻辑
|
||||
### 时间范围采集逻辑
|
||||
|
||||
按时间范围抓取时,程序会:
|
||||
1. 从第一页开始顺序抓取
|
||||
按时间范围采集时,程序会:
|
||||
|
||||
1. 从第一页开始顺序采集
|
||||
2. 检查每页公告的日期是否在指定范围内
|
||||
3. 如果某页所有公告都早于起始日期,自动停止抓取
|
||||
4. 支持设置最大页数限制,避免过度抓取
|
||||
3. 如果某页所有公告都早于起始日期,自动停止采集
|
||||
4. 支持设置最大页数限制,避免过度采集
|
||||
|
||||
### 金额提取规则
|
||||
|
||||
支持识别以下格式:
|
||||
- 预算金额: XX万元
|
||||
- 最高限价: XX万元
|
||||
- 预算: XX万元
|
||||
- 金额: XX万元
|
||||
- 直接数字: XX万元
|
||||
|
||||
- 预算金额: XX 万元
|
||||
- 最高限价: XX 万元
|
||||
- 预算: XX 万元
|
||||
- 金额: XX 万元
|
||||
- 直接数字: XX 万元
|
||||
|
||||
### 编码处理
|
||||
|
||||
自动识别网页编码:
|
||||
|
||||
- 优先读取 Content-Type 中的 charset
|
||||
- 自动处理 GBK、GB2312 编码
|
||||
- 默认使用 UTF-8
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 为什么抓取速度比较慢?
|
||||
A: 为了避免对服务器造成过大压力,程序限制了请求频率(每条延迟500ms-1s)。这是一个负责任的爬虫设计。
|
||||
### Q: 为什么采集速度比较慢?
|
||||
|
||||
### Q: 如何抓取指定日期范围的公告?
|
||||
A: 在Web界面的"详情抓取"和"生成报告"标签中勾选"按时间范围抓取",然后输入起始和结束日期即可。
|
||||
A: 为了避免对服务器造成过大压力,程序限制了请求频率(每条延迟 500ms-1s)。这是一个负责任的爬虫设计。
|
||||
|
||||
### Q: 如何采集指定日期范围的公告?
|
||||
|
||||
A: 在 Web 界面的"详情采集"和"生成报告"标签中勾选"按时间范围采集",然后输入起始和结束日期即可。
|
||||
|
||||
### Q: 导出的报告在哪里?
|
||||
A: 点击"导出Word"或"导出Markdown"按钮后会自动下载到浏览器的默认下载目录。
|
||||
|
||||
### Q: 可以抓取其他网站吗?
|
||||
A: 需要修改 server.js 中的 BASE_URL 和相应的解析函数,因为不同网站的HTML结构不同。
|
||||
A: 点击"导出 Word"或"导出 Markdown"按钮后会自动下载到浏览器的默认下载目录。
|
||||
|
||||
### Q: 可以采集其他网站吗?
|
||||
|
||||
A: 需要修改 server.js 中的 BASE_URL 和相应的解析函数,因为不同网站的 HTML 结构不同。
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v1.0.0 (2025-12-12)
|
||||
- Web可视化界面
|
||||
- 支持按时间范围抓取
|
||||
|
||||
- Web 可视化界面
|
||||
- 支持按时间范围采集
|
||||
- 支持分页浏览
|
||||
- 支持导出Word/Markdown报告
|
||||
- RESTful API接口
|
||||
- 支持导出 Word/Markdown 报告
|
||||
- RESTful API 接口
|
||||
- 自动编码识别
|
||||
- 智能金额提取
|
||||
|
||||
|
||||
Reference in New Issue
Block a user