AIサイト分析機能(サイト定義の自動習得) #8

Closed
opened 2026-09-14 16:33:02 +00:00 by joe · 1 comment
Owner

各サイトの検索方法をAI(MiMo)が分析して習得し、スクレイピング定義を自動生成する仕組み。

PoC結果(価格コム)✅ 成功

  • 価格コムの検索結果HTML(288KB)を構造圧縮(14KB)してMiMoに分析依頼
  • AIが生成した定義:
    • カードセレクタ: .ucItemBox.c-box-regularBox
    • 詳細URLパターン: /kuruma/used/
    • ページング: numbered型(Page={page}/)
  • 検証: 生成セレクタで20件のカード抽出・詳細URL5件取得 ✅
  • site_definitions テーブルに保存完了

実装

  • app/analyze_site.py(PoC): fetch→構造圧縮→AI分析→検証→DB保存
  • site_definitions テーブル新設

次のステップ(全体展開)

  • carsensor/goneet にもAI分析を適用(Playwright対応)
  • search_job.py を site_definitions 参照に変更
  • 自己修復ループ(セレクタ0件時に自動再分析)
  • 新サイト追加UI(URL入力だけで分析→巡回開始)
各サイトの検索方法をAI(MiMo)が分析して習得し、スクレイピング定義を自動生成する仕組み。 ## PoC結果(価格コム)✅ 成功 - 価格コムの検索結果HTML(288KB)を構造圧縮(14KB)してMiMoに分析依頼 - AIが生成した定義: - カードセレクタ: `.ucItemBox.c-box-regularBox` - 詳細URLパターン: /kuruma/used/ - ページング: numbered型(Page={page}/) - 検証: 生成セレクタで20件のカード抽出・詳細URL5件取得 ✅ - site_definitions テーブルに保存完了 ## 実装 - app/analyze_site.py(PoC): fetch→構造圧縮→AI分析→検証→DB保存 - site_definitions テーブル新設 ## 次のステップ(全体展開) - [ ] carsensor/goneet にもAI分析を適用(Playwright対応) - [ ] search_job.py を site_definitions 参照に変更 - [ ] 自己修復ループ(セレクタ0件時に自動再分析) - [ ] 新サイト追加UI(URL入力だけで分析→巡回開始)
Author
Owner

全体展開完了(2026-09-27)

実施内容

  1. カーセンサー/グーネット AI分析適用
    • goneet: AI分析実施 → 車両カード候補 .search-card を取得(omniroute 19:52成功応答、site_definitions に登録)
    • carsensor: 既存定義 div.cassetteWrap.js-mainCassette が実証済み(cron 150カード・ページ5成功)のため優先維持
  2. search_job.py を site_definitions 参照に改修
    • search_url_template / url_page1 / detail_url_patterns / button selectors の DB値を DI
    • site_key 識別を SITES逆引き→site["key"]直指定に改善
    • 詳細URLパターンをハードコードから site.get('detail_url_patterns') に変更
  3. goneet POST検索方式の確立
    • goo-net の GET クエリ(keyword/price_to)無視が実証 → 正規フォームパラメータでPOST検索へ変更
    • 実証: 50カード検出 → e-POWER 14台抽出 → 新規2台 保存(source_url含む)
  4. 自己修復ループ 既存動作確認済み(kakaku/goneetで rescue 発火確認済み)
  5. 新サイト追加UI(settings.html)
    • URL入力+サイト名でAI分析 → 検証成功時は site_definitions 自動保存
    • 該当API: GET /api/sites / PUT /api/sites/{key} / POST /api/sites/{key}/analyze
  6. db_init.py に site_definitions DDL 追加(新環境対応)
  7. 実証: goneet 定義取り込み + POST検索で新規2台保存済み

検証

  • uvicorn再起動後 /api/sites 200・設定UI正常読み込み
  • pytest 41テスト全パス
## 全体展開完了(2026-09-27) ### 実施内容 1. **カーセンサー/グーネット AI分析適用** - goneet: AI分析実施 → 車両カード候補 `.search-card` を取得(omniroute 19:52成功応答、site_definitions に登録) - carsensor: 既存定義 `div.cassetteWrap.js-mainCassette` が実証済み(cron 150カード・ページ5成功)のため優先維持 2. **search_job.py を site_definitions 参照に改修** - `search_url_template` / `url_page1` / `detail_url_patterns` / `button selectors` の DB値を DI - site_key 識別を SITES逆引き→site["key"]直指定に改善 - 詳細URLパターンをハードコードから site.get('detail_url_patterns') に変更 3. **goneet POST検索方式の確立** - goo-net の GET クエリ(keyword/price_to)無視が実証 → 正規フォームパラメータでPOST検索へ変更 - 実証: 50カード検出 → e-POWER 14台抽出 → 新規2台 保存(source_url含む) 4. **自己修復ループ** 既存動作確認済み(kakaku/goneetで rescue 発火確認済み) 5. **新サイト追加UI(settings.html)** - URL入力+サイト名でAI分析 → 検証成功時は site_definitions 自動保存 - 該当API: GET /api/sites / PUT /api/sites/{key} / POST /api/sites/{key}/analyze 6. **db_init.py に site_definitions DDL 追加**(新環境対応) 7. 実証: goneet 定義取り込み + POST検索で新規2台保存済み ### 検証 - uvicorn再起動後 /api/sites 200・設定UI正常読み込み - pytest 41テスト全パス
joe 2026-09-27 11:41:33 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joe/findcar#8
No description provided.