KOWORI.NET

BLOG ENTRY

スクレイプAppプラン、3年ぶり二度目の無事死亡か

  • #Codex
  • #Playwright

ゲームする人

あのプランを覚えているだろうか

2023年にスクレイプAppプラン失敗の巻という記事を書いた。

プレミアムバンダイをスクレイピングしてガンプラの在庫を調べ、増減があったらTwitterに投稿するというプランだった。JavaとJsoupで試したらtimeout、cURLでもtimeout。ヘッドレスブラウザという手もあったが、バンナムさんに怒られそうなので静かに埋葬した。

あれから3年。TwitterはXになり、わしはCodexに相談するようになった。

技術は進歩した。これはいけるのでは?

なお、相手の守備力も上がっていた。

PLAN_1 ガンダムベースから攻める

まず考えたのが、ガンダムベースの公開カテゴリを普通にHTTPで取得して、購入可能な商品を判定する方法。

軽いし、ブラウザを丸ごと動かす必要もないし、初期実装までは完成した。今回は勝ったなと思った。

ところが robots.txt を確認すると、販売中一覧で重要な /search/ はクロール禁止。

そしてサイトは /search/ を使いまくっている。

ルールを守ると欲しい一覧が取れない。欲しい一覧を取りに行くとルールを守れない。詰みである。

公開カテゴリだけでも一部の商品は確認できるが、網羅性が足りない。在庫監視なのに見落としが多いのでは、ザルを監視カメラとして使うようなもので実用には厳しい。

PLAN_1、初期実装まで進んだところで無事死亡。

PLAN_2 やはりプレバン本丸へ

次はプレミアムバンダイのガンダム関連商品ページをPlaywrightで取得する案。

Playwrightなら実際のブラウザに近い動きができるので、対象範囲としては申し分ない。ページを巡回して、前回との差分を調べて、在庫が変わったらメール通知。最後はcronで定期実行。

完成予想図だけは大変立派である。

問題はBot対策が厳しいこと。

いきなり全ページを巡回して「こんにちは!定期巡回です!」などと突撃するわけにはいかない。まずは1ページだけ取得できるかを検証する。安定して取れて、先方にも無理をかけない運用ができそうなら、その先を考える。

取れなかったら?

2023年の記事に「ヘッドレスブラウザを使うことも考えられた」と書いてあるので、3年かけて同じ場所まで戻ってきたことになる。

現在地

  • PLAN_1:動いた。しかし実用に必要な場所がクロール禁止なので終了
  • PLAN_2:対象範囲は十分。ただしBot対策があるので1ページ限定の検証待ち
  • わし:またバンナムさんの城門前にいる

というわけで、スクレイプAppプランは3年ぶり二度目の無事死亡……と思いきや、今回はまだPLAN_2が生きている。

次回、「Playwright氏、門前払いされる」の巻。

始まらなかったら察してください。