
あのプランを覚えているだろうか
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氏、門前払いされる」の巻。
始まらなかったら察してください。