ygp-gdzwfw-gov-cn/README.md
秦秋旭 5acb847bc1 优化爬虫:增量爬取、API参数优化、Excel兼容
主要变更:
1. 重命名 ygp_crawler.py -> main.py
2. API参数优化:
   - tradingProcess 固定传 "513,2C52,3C52" 精准筛选中标结果
   - pageSize 固定为 50 提高抓取效率
   - 通过 publishStartTime/publishEndTime 传入时间范围
3. 默认查询最近3个月(原为当天)
4. 增量爬取改为默认开启(移除 -i 参数)
5. CSV文件添加 UTF-8 BOM,Excel可直接打开
6. 更新 README.md 文档
7. 添加前端 JS 代码参考文件到 assets/ 目录

使用方法:
- 增量更新:python main.py
- 全量查询:rm results.csv && python main.py

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 00:37:07 +08:00

110 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 广东省公共资源交易平台爬虫
本项目是一个 Python 爬虫程序,用于抓取 [广东省公共资源交易平台](https://ygp.gdzwfw.gov.cn/#/44/jygg) 的中标结果公告。
## 功能特性
- **精准筛选**:通过 `tradingProcess` 字段直接筛选中标结果,无需标题关键词过滤。
- **日期范围查询**:支持指定开始和结束日期,**默认为最近3个月**。
- **高效分页**:每页 50 条记录,自动处理多页数据抓取。
- **API 时间过滤**:时间参数直接通过接口 `publishStartTime``publishEndTime` 传入,减少无效数据传输。
- **动态构造 URL**:根据接口返回字段自动生成可直接访问的详情页链接。
- **纯 HTTP 请求**:直接使用 aiohttp 调用官方 API无需浏览器轻量高效。
- **CSV 实时保存**:数据实时保存到 CSV 文件(带 UTF-8 BOMExcel 可直接打开),同时输出到终端。
- **自定义输出路径**:支持通过参数指定输出文件路径。
- **增量爬取**:自动从已有 CSV 文件计算时间范围,只抓取新数据,避免重复。如需全量查询,删除 CSV 文件即可。
- **数据排序**:新数据在前,旧数据在后,按发布时间倒序排列。
## 环境要求
- Python 3.8+
## 安装步骤
1. **克隆项目并进入目录**
```bash
cd ygp-gdzwfw-gov-cn
```
2. **创建并激活虚拟环境 (推荐)**
```bash
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# 或 venv\Scripts\activate # Windows
```
3. **安装依赖**
```bash
pip install -r requirements.txt
```
## 使用方法
### 1. 抓取最近3个月的数据 (默认)
直接运行脚本程序将自动抓取最近3个月的中标结果公告。
```bash
python main.py
```
### 2. 抓取指定日期范围
使用 `--start-date``--end-date` 参数(格式:`YYYY-MM-DD`)。
```bash
python main.py --start-date 2026-02-01 --end-date 2026-02-04
```
**示例抓取最近7天的数据**
```bash
python main.py --start-date 2026-01-29 --end-date 2026-02-05
```
### 3. 自定义输出文件路径
使用 `-o``--output` 参数指定输出 CSV 文件的路径(默认为 `results.csv`)。
```bash
python main.py --start-date 2026-02-01 --end-date 2026-02-04 -o my_data.csv
```
### 4. 增量爬取(默认开启)
脚本默认启用增量爬取模式。会自动读取已有 CSV 文件,计算时间范围,只抓取新数据。
**自动计算日期范围(推荐)**
```bash
# 自动从已有数据的最新日期+1开始爬取到今天
python main.py
```
**手动指定日期范围**
```bash
# 手动指定日期范围(仍会去重)
python main.py --start-date 2026-02-01 --end-date 2026-02-04
```
**全量查询**
```bash
# 删除 CSV 文件后运行,即可进行全量查询
rm results.csv
python main.py
```
**增量爬取特性**
- 自动识别已有 CSV 文件中的数据时间范围
- 自动去重(根据详情链接判断)
- 新数据插入到文件前面,旧数据保留在后面
- 如果无新数据可抓取,自动退出
## 数据输出示例
### 终端输出JSON 格式,便于阅读)
```json
{
"项目标题": "某某项目中标结果公示",
"发布时间": "2026-02-04 17:30:02",
"详细链接": "https://ygp.gdzwfw.gov.cn/#/44/new/jygg/v3/A?noticeId=..."
}
```
### CSV 文件格式
```csv
项目标题,发布时间,详细链接
某某项目中标结果公示,2026-02-04 17:30:02,https://ygp.gdzwfw.gov.cn/#/44/new/jygg/v3/A?...
```