← 返回
未分类

Alaska Air

Scrape Alaska Airlines award calendar and flight data to check miles, award availability, and prices for single-leg trips on alaskaair.com.
抓取阿拉斯加航空奖励日历和航班数据,检查单程航班的里程、奖励座位可用性及价格。
iskwang iskwang 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 366
下载
💾 1
安装
1
版本
#latest

概述

Alaska Airlines Scraper

Alaska Air uses SvelteKit SSR — all flight/award data is embedded in the raw HTML response. No Playwright or JS rendering needed.

> ⚠️ 目前只支援單程查詢(RT=false)。來回票請分兩次查詢。


⚠️ 日期陷阱(CRITICAL — 必讀)

用戶說「2月14日」或「2/14」→ 查整個2月,但結果只顯示有位子的日期。

絕對不能把「2/4」當「2/14」! 日期要精確對應,2027-02-042027-02-14

如果用戶指定的日期沒有位子(awardPoints: null),明確告知:

❌ 2月14日 無可用里程票
✅ 本月最近有位:2月15日 (15,000 里程)

不要默默換成別的日期後說「我找到了」。


查詢多路線/多月份 → 平行 Sub-Agents(MANDATORY)

2 個以上路線或月份,必須同時 spawn,絕不串行。

每個 sub-agent 查完後立刻用 message 工具發 Telegram — 不要等其他 agent,有結果馬上發:

# 每個 Worker sub-agent 的任務模板:
spawn model=openrouter/anthropic/claude-haiku-4-5
allowedTools=exec,read,message

"用 alaska-air skill 查 {ORIGIN}→{DEST} {YYYY}年{MM}月里程行事曆。
查完後立刻用 message 工具把結果發給用戶(Telegram to: {chat_id}),
不要等其他查詢,有結果就馬上發。
輸出格式必須含 👉 直連 URL,每個日期一個 URL,URL 單獨一行,前後各空一行。"

範例:查 3 條路線 → 同時 spawn 3 個 Worker,每個跑完就各自發 Telegram,不等彼此。


單一路線查詢

Step 1: 抓 HTML

OD= 填目標月份內任何一天即可,API 回傳整月資料。

curl -s -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36" \
  "https://www.alaskaair.com/search/calendar?O={ORIGIN}&D={DEST}&OD={YYYY-MM-01}&A=1&RT=false&RequestType=Calendar&ShoppingMethod=onlineaward&locale=en-us" \
  -o /tmp/alaska_{ORIGIN}_{DEST}_{YYYYMM}.html

Step 2: 錯誤處理

抓完後先確認 HTML 是否含有效資料:

if ! grep -q 'awardPoints' /tmp/alaska_{ORIGIN}_{DEST}_{YYYYMM}.html; then
  echo "抓取失敗:HTML 不含 awardPoints,可能被封鎖或路線無效"
  exit 1
fi

若抓取失敗,直接回報用戶「抓取失敗,請稍後再試」,不繼續執行。

Step 3: 提取資料(含直連 URL)

將以下內容寫入 /tmp/parse_alaska.py,再執行:

# /tmp/parse_alaska.py
import re, json, sys

def scrape_alaska(origin, dest, yyyymm, adults=1):
    html = open(f'/tmp/alaska_{origin}_{dest}_{yyyymm}.html').read()
    pat = r'\{date:"([^"]+)",price:([\d.]+|null),awardPoints:(\d+|null),isDiscounted:(true|false),flightSegments:\[.*?\],solutionId:"([^"]*)"\}'
    results = []
    for date, price, miles, disc, sol in re.findall(pat, html):
        avail = miles != 'null'
        entry = {
            'date': date,
            'available': avail,
            'miles': int(miles) if avail else None,
            'price_usd': float(price) if avail else None,
            'discounted': disc == 'true',
        }
        if avail:
            entry['book_url'] = (
                f"https://www.alaskaair.com/search/?O={origin}&D={dest}"
                f"&D1={date}&A={adults}&RT=false&ShoppingMethod=onlineaward&locale=en-us"
            )
        results.append(entry)
    # 按日期排序(保留所有日期,含 N/A)
    return sorted(results, key=lambda x: x['date'])

origin, dest, yyyymm = sys.argv[1], sys.argv[2], sys.argv[3]
results = scrape_alaska(origin, dest, yyyymm)
available = [r for r in results if r['available']]
print(json.dumps(available, indent=2, ensure_ascii=False))

執行方式:

python3 /tmp/parse_alaska.py {ORIGIN} {DEST} {YYYYMM}

例如:python3 /tmp/parse_alaska.py KIX TPE 202702


輸出格式(MANDATORY)

每次查詢完成後立刻發 Telegram(用 message 工具),格式:

📅 KIX → TPE | 2027年2月
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 有位日期(按里程排序):

2月4日 (四)   7,500 里程 + $48.3  ⭐

👉 https://www.alaskaair.com/search/?O=KIX&D=TPE&D1=2027-02-04&A=1&RT=false&ShoppingMethod=onlineaward&locale=en-us

2月2日 (二)  10,000 里程 + $45.1

👉 https://www.alaskaair.com/search/?O=KIX&D=TPE&D1=2027-02-02&A=1&RT=false&ShoppingMethod=onlineaward&locale=en-us

(若用戶指定日期無位)
❌ 2月14日 無可用里程票

規則:

  • 按里程數由少到多排序
  • 最便宜加 ⭐
  • 每個日期必須有 👉 直連 URL,URL 單獨一行,前後各加空行
  • 用戶指定日期無位時明確說 ❌,不要偷換成其他日期
  • 查完即發,不等其他 agent
  • Telegram chat ID 由呼叫方提供,不寫死在此

URL 參數

O=KIX          # 出發 IATA
D=TPE          # 目的地 IATA
D1=2027-02-04  # 指定日期(直連訂票頁)
OD=2027-02-01  # 月份任意日(行事曆 API,回傳整月)
A=1            # 大人數
RT=false       # 單程
ShoppingMethod=onlineaward
locale=en-us

已知開放 API

curl https://www.alaskaair.com/search/api/citySearch/getAllAirports
curl https://www.alaskaair.com/search/api/discounts
curl https://www.alaskaair.com/account/token

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-07 08:55 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-agent

self-improving agent

pskoett
捕获经验教训、错误及修正内容,以实现持续改进。适用于以下场景:(1)命令或操作意外失败;(2)用户纠正Claude(如“不,那不对……”“实际上……”);(3)用户请求的功能不存在;(4)外部API或工具出现故障;(5)Claude发现自身
★ 4,082 📥 810,527
ai-agent

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,379 📥 320,477
dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 676 📥 325,464