Files
cpc-direct-stations/SKILL.md
Timmy 1c432a251e Reorganize to match skills directory structure
- Move cpc_direct_stations.py to scripts/
- Rename CLAUDE.md to SKILL.md
- Add .gitignore for Python cache files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 09:54:50 +08:00

66 lines
2.0 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Overview
This skill contains a single standalone script for scraping Taiwan CPC (中油) official direct-operated gas station information. The script fetches data from `https://vipmbr.cpc.com.tw/mbwebs/service_search.aspx` using form POST requests and parses the HTML response.
## Architecture
The script uses only Python stdlib (no external dependencies):
- `HTMLParser` - Custom `StationTableParser` class extracts data from the `#MyGridView1` table
- `urllib` - Handles HTTP requests with proper User-Agent and form data encoding
- `__VIEWSTATE`/`__EVENTVALIDATION` - ASP.NET hidden fields are extracted and submitted in POST requests
The query flow:
1. GET initial page to extract ASP.NET hidden fields
2. POST with `TypeGroup=rbGroup2` to select "direct-operated stations" (直營站)
3. Extract hidden fields again
4. POST with `btnQuery=查詢` to submit the query
5. Parse HTML response table
## Common Commands
### Get all direct-operated stations (default text output)
```bash
python3 skills/c/cpc_direct_stations.py
```
### Query by city
```bash
python3 skills/c/cpc_direct_stations.py --city 台北市
```
### Filter by keyword (station name or address)
```bash
python3 skills/c/cpc_direct_stations.py --city 新北市 --keyword 中山
```
### Export as JSON
```bash
python3 skills/c/cpc_direct_stations.py --city 台北市 --format json
```
### Export as CSV (with BOM for Excel compatibility)
```bash
python3 skills/c/cpc_direct_stations.py --format csv --out cpc_stations.csv
```
## City Codes
The `CITY_MAP` dict maps Chinese city names to CPC internal codes (e.g., `"台北市": "A "`). Supported cities include all Taiwan counties and cities.
## Output Schema
Each station record contains:
- `縣市` - County/City
- `鄉鎮區` - District
- `類別` - Category (e.g., "直營站")
- `站名` - Station name
- `站代號` - Station code
- `地址` - Address
- `電話` - Phone number
- `營業時間` - Business hours