下記の記事について、monoPeak.vbsが少数ですが動かない方がいらっしゃいます。
エクセルマクロを使ってwebサイトのデータを取得するプログラムをランサーズやクラウドワークスで開発作業を依頼する人もいるかと思います。
その時使われる、常套手段とも言えるのがこのIE遠隔操作です。
Microsoft謹製のソフトウェア、つまりIEやExcel、Wordなどなど、すべて他のプログラムから遠隔操作しやすい仕組み(オートメーション機能)を持っています。
わたしもその仕組みを利用してIEを遠隔操作してデータ収集を行ったりします。
通常、webサイトのデータを取得するにはwebスクレイピングという技を使うのですが…。
このwebスクレイピングというのは一般的には最小限のプログラムで済ませることが多いです。
簡単に説明しますと、webサイトからデータを取得するためにはわざわざIEを遠隔操作してwebサイトにアクセスする、ということをしなくてもいいんです。
必要最小限の情報をサーバに渡し、必要最小限のデータをダウンロードする。これが一般的です。(たぶん)
ですが、わたしはわざわざIEを遠隔操作し、IEにデータを取得しにいってもらっています。
なんでこんなことをするかというと、常套手段的なwebスクレイピングはbotと呼ばれていて、圧倒的グレーなところがあります。
高速に動けてしまうためサーバに高負荷を与えかねないし、botを使っているということがサーバ側にバレバレです。botを禁止しているサーバは多数あります。
(一応、webスクレイピングによるデータ収集は、法的には私的な利用であれば違法ではないという認識です。収集したデータを人に譲渡する、販売するはNG。ちなみに関わってくるのは著作権です。)
たとえるなら、bot使用は裏口から入るようなもので、IE遠隔操作はあくまでもIEを使ったアクセスなので正面から入っているのと同じ、みたいな。
webスクレイピングは速さよりもサーバに迷惑をかけないようにすることのほうがわたしは大切だと考えています。なので、速度を捨ててわざわざIEを遠隔操作しています。
しかし、IEにはどうも環境依存がありますね。どうにも原因が特定できませんが、IEでページを遷移するだけで内部的に別ウィンドウに切り替わったと扱われてしまうことがあるようです。
で、次の対処法としては、Microsoftのオートメーション機能を利用するのではなく、ブラウザオートメーション機能を使ってみようと思います。
具体的にはSeleniumというやつです。
これでFireFoxやchromeを遠隔操作してみようかな、と思います。
まぁまずはSeleniumってなんぞや!ってところからなんですけどね!
webサイトからツール・プログラムでデータをダウンロードしてみたい、という方の参考になればうれしいです。
ちなみに、ただいまセラーからASINを根こそぎ抜き出すツール作成中です。配布形態は検討中ですが、こちらがもうすぐ完成です。その後に対応を進めます。
さらにその後に全世界AmazonのPA-APIに対応していきます。