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

3.5 KiB
Raw Blame History

广东省公共资源交易平台爬虫

本项目是一个 Python 爬虫程序,用于抓取 广东省公共资源交易平台 的中标结果公告。

功能特性

  • 精准筛选:通过 tradingProcess 字段直接筛选中标结果,无需标题关键词过滤。
  • 日期范围查询:支持指定开始和结束日期,默认为最近3个月
  • 高效分页:每页 50 条记录,自动处理多页数据抓取。
  • API 时间过滤:时间参数直接通过接口 publishStartTimepublishEndTime 传入,减少无效数据传输。
  • 动态构造 URL:根据接口返回字段自动生成可直接访问的详情页链接。
  • 纯 HTTP 请求:直接使用 aiohttp 调用官方 API无需浏览器轻量高效。
  • CSV 实时保存:数据实时保存到 CSV 文件(带 UTF-8 BOMExcel 可直接打开),同时输出到终端。
  • 自定义输出路径:支持通过参数指定输出文件路径。
  • 增量爬取:自动从已有 CSV 文件计算时间范围,只抓取新数据,避免重复。如需全量查询,删除 CSV 文件即可。
  • 数据排序:新数据在前,旧数据在后,按发布时间倒序排列。

环境要求

  • Python 3.8+

安装步骤

  1. 克隆项目并进入目录

    cd ygp-gdzwfw-gov-cn
    
  2. 创建并激活虚拟环境 (推荐)

    python3 -m venv venv
    source venv/bin/activate  # macOS/Linux
    # 或 venv\Scripts\activate  # Windows
    
  3. 安装依赖

    pip install -r requirements.txt
    

使用方法

1. 抓取最近3个月的数据 (默认)

直接运行脚本程序将自动抓取最近3个月的中标结果公告。

python main.py

2. 抓取指定日期范围

使用 --start-date--end-date 参数(格式:YYYY-MM-DD)。

python main.py --start-date 2026-02-01 --end-date 2026-02-04

示例抓取最近7天的数据

python main.py --start-date 2026-01-29 --end-date 2026-02-05

3. 自定义输出文件路径

使用 -o--output 参数指定输出 CSV 文件的路径(默认为 results.csv)。

python main.py --start-date 2026-02-01 --end-date 2026-02-04 -o my_data.csv

4. 增量爬取(默认开启)

脚本默认启用增量爬取模式。会自动读取已有 CSV 文件,计算时间范围,只抓取新数据。

自动计算日期范围(推荐)

# 自动从已有数据的最新日期+1开始爬取到今天
python main.py

手动指定日期范围

# 手动指定日期范围(仍会去重)
python main.py --start-date 2026-02-01 --end-date 2026-02-04

全量查询

# 删除 CSV 文件后运行,即可进行全量查询
rm results.csv
python main.py

增量爬取特性

  • 自动识别已有 CSV 文件中的数据时间范围
  • 自动去重(根据详情链接判断)
  • 新数据插入到文件前面,旧数据保留在后面
  • 如果无新数据可抓取,自动退出

数据输出示例

终端输出JSON 格式,便于阅读)

{
  "项目标题": "某某项目中标结果公示",
  "发布时间": "2026-02-04 17:30:02",
  "详细链接": "https://ygp.gdzwfw.gov.cn/#/44/new/jygg/v3/A?noticeId=..."
}

CSV 文件格式

项目标题,发布时间,详细链接
某某项目中标结果公示,2026-02-04 17:30:02,https://ygp.gdzwfw.gov.cn/#/44/new/jygg/v3/A?...