【VBScript(WSH)】chromeをDOM操作したいときどうすればいいか

【VBScript(WSH)】chromeをDOM操作したいときどうすればいいか

【VBScript(WSH)】chromeをDOM操作したいときどうすればいいか

自前のサイトをDOM操作したいときはJSを読み込ませておけばOKです。
そう言った事が出来ない場合(スクレイピングをしたいとき)どうするかという話です。

VBScriptやPowerShellを使ってもChromeはIEの様にオブジェクトとして引っ張ってこれない為、DOMによる狙い撃ちが一筋縄ではできません。それでも実行しようとした場合、選択肢は次の3つになります。

  1. DOM操作できるようにプラグインを作る
  2. 自前のサイトにスクレイピング対象のサイトを読込み自前サイト内のJavaScriptによってDOM操作する
  3. プログラミング言語とselenium入れてヘッドレスChromeをDOM操作する

うん、IEがいまだに重宝されるわけだ。

VBScriptを利用する場合はIEオンリーで検討した方が良い

VBScriptでスクレイピングを書く以上、Chromeと言う選択肢は外して考えていた方が無難です。
理由は折角の利点(インストール不要のDOM操作)が使えなくなるからです。

それでも環境って変わっていくものなので、VBScript×Chrome×DOM操作が必須なのであれば上の 1-2項 で対応する事になります。

1項/2項共に事前設置したJavaScriptで指定した値を拾いVBScriptで取り出す操作となります。

DOM操作できるようにプラグインを作る

プラグインの読込設定と言うハードルはあるものの、上手く使えば長く使えます。
Amazonの分析ツールとかこの方法で作成されているものが多いですね。

でも、下手な人が作ったツールだと他のサイトで表示崩れを引き起こしたりとか予期せぬ事態も引き起こします。
やりたいことの範囲が狭ければ一番簡単に作れるのでハードルは低いと思います。

但し、プラグインのインストールが必須なので使いたいPC全てで操作が必要になります。

自前のサイトにスクレイピング対象のサイトを読込みDOM操作する

某ECコンサル会社さんのツールで出会い「こんな方法があるのか」と思ったテクニックです。
【JavaScript iframe操作】などで検索すれば沢山の記事に出会えます。

自前サイトを持っていなくてもデスクトップにHTMLでJavaScript組んでおけば良いのでこちらもハードルは低いですね。WEB上に置いておく場合、ログイン機能を有していないと(いろんな意味で)危ないなので要注意です。

ただし、WEB上に置いてしまえばPCの環境関係なく操作可能になります。

プログラミング言語とselenium入れてヘッドレスChromeをDOM操作する

一番効率も汎用性もいいけど全工程とコストがかかります。
自前でプログラミングも環境も用意できる場合は最優先で選択すべき方法です。

こちらもサーバー共有をしてしまえばPC側の環境関係なく操作可能に出来ます。

まとめ

今回お仕事として承ったAmazonからの情報取得プログラムにてIEで操作できないパーツがありました。
受けたお仕事の中ではその項目のみDOM操作をあきらめ、IE以外のブラウザを【WScript.Shell】で動かし情報取得を実装しました。

デスクトップアプリである事という条件があったのでこの選択になったのですが「Microsoftさん、もうちょっとIEの面倒見てくれないかなぁ」と思った今日この頃です。