頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Nintendo Switch販売ページをスクレイピング?

なんとかNintendo Switch本体を購入しようとお店に電話で在庫確認したりマイニンテンドーストアなどをチェックしてたんだけど、なかなか買えない。
この前はマイニンテンドーストアでカートに入れることはできたけど支払いまでに完売してしまったらしくダメだった。もう少し気付くのが早ければ、、、待てよ、webサイトのチェックならスクレイピングでできるんじゃね?と思って調べてみた。

ターゲットは本家My Nintendo Storeとトイザらスオンラインストア。

トイザらスオンラインストア

↑トイザらスだとこんな風に”入荷予定あり”と表記があるのでついつい期待しちゃうんだよね。

で、スクレイピングできるのかな?とhtmlの中身を見てみた。

マイニンテンドーストア

↑My Nintendo Store → 何故かSOLD OUTの文字はない(サイトとしては画像でもなくテキストなのにね、俺には理解できん)。検出する文字列が見つからないんじゃどうしようもないのであきらめた。

トイザらスのソース

↑トイザらス オンラインストア → 在庫に関していくつかの文字列を動的に表示を切り替えてるみたいで、単に「在庫あり」もしくは「在庫わずか」の文字列を探したら常に検出しちゃってダメだった。

ちなみに PythonのBeautiful Soup でやってた。
Python Webスクレイピング 実践入門 - Qiita
↑この辺りがとても参考になった。一定時間経過後に処理するとかもあるし。

動的なのが必要なのか?ということで Selenium なるものを使おうとChromedriverもインストール、してやってみたけど結果はダメだった。

ところがこのSeleniumってのはスクショも撮れるんだわ。さすがにスクショなら該当するSOLD OUTとか捕まえられるんじゃね?と思ってまずはスクショを撮れるか試してみた。

Seleniumによるスクショ1
Seleniumによるスクショ2

↑指定のとこまでスクロールさせてスクショ撮影、保存。いけるやん、Seleniumやるやん!
ここに「SOLD OUT」や「在庫なし」がなければPythonからMacへ通知(通知関連は↓この辺りを参考に前にやったな)。
Macの通知センターにPythonから通知する - Qiita

問題はスクショ画像から在庫有無を判断する方法なんだけど、、、OpenCVでなんか使えそうなのあんのかな?日本語OCRとかで評価?せっかくなので機械学習で該当文字画像の有無を検出するNNを作るか?データセットはどんなのが必要になるんかな?とか色々考えてたところ、、、



へへへへへ!買えちゃったんです!日課の電話問い合わせをしたら「在庫ありますよ」と言われて大急ぎで自転車飛ばしてトイザらスへ。本命のネオンブルー/ネオンレッドは無くなってた(電話時には1台ありと言ってたが)けどグレーをゲット。

そんなわけで、もうスクレイピングやらんですみました。

<< SwitchのARMSはJoy-Con一台で遊べるのか?  TopPage  機械学習で人体頭部の姿勢を得る(3) >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1062-ed14ffd7




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad