質問: こんにちは。 Webスクレイピング(データダウンロード)についての質問があります。 スクレイピングを、 GoogleSpreadSheet の GAS あるいは Windows Excel VBA での IE コントロール によって、何回か行ったことがあります。 GoogleSpreadSheet の GAS はWebで動くので Mac環境などのユーザーでも動くため便利なのですが あるWEBショップのデータダウンロードなどのときに ログインが必要になる場合があります。 そうすると、普通のURL指定したダウンロードだけではなくなります。 Excel の IE 操作の場合は、 ブラウザの入力欄に文字を埋め込み 特定のボタンを押し、そして、データダウンロード という操作ができるものの、 GoogleSpreadSheet の GAS では、 そのような操作ができるのかどうかわからず、困っています。 やり方をご存知の方、おられましたら 教えていただけると助かります。 自分の書いた記事ですが、GASでの通常のスクレイピングはこの内容のようにやっています。 Google SpreadSheet のGAS(JavaScript)でスクレイピング(Webデータゲット) - Qiita 繰り返しになりますが、 ExcelVBAではそれはできるのですが、 GAS では、 ブラウザの入力欄に文字を埋め込み 特定のボタンを押し、そして、データダウンロード という操作ができるものでしょうか? また、 スプレッドシート使わない、node.jsを使ったJavaScriptや Python Ruby PHP などでは、 そのようなブラウザ操作系のスクレイピングは できるものでしょうか? 最初のとっかかりのやり方やテクニックサイトなどを教えていただけましたら助かります。 よろしくおねがいします。 Windows の Excel ではできるのですが IEを操作するというやや不安定な動作になることと IEの将来性などを考えると、違う方法を模索したいと思っております。 GoogleChrome の非表示モードと Selenium Web Driver を使うというやり方は どうやらできるらしいという程度しかしらないのですが 他にもやれる方法があるかもしれないと思って質問しております。 Selenium Web Driver でのやり方のサイトも、入力欄への文字の配置やwebページ上のボタンを押すやり方が存在すれば教えていただきたいです。 今のところ対象なのは、"ふるせる"というところなのですが そこに限らず、一般的なWEBショップ、 あるいは、ブログなどのログインができるようになりたいと 思っております。 長々とすいません。 よろしくおねがいします。
回答: あれからいろいろ調べましたので、記載しておきます。 ログインの必要なページをスクレイピングする際に ExcelVBA IE のコントロールと同等の操作を行うためには、 アドバイスいただいた PhantomJS でも可能かと思いますが 開発の先がなさそうなので、 node.js 上で chromy というライブラリを使って Google Chrome のヘッドレスモードでコントロールする という方法がやりやすいと感じました。 サンプルを幾つか作ってみましたが、これは使えるという実感しました。 WebDriverをインストールしてSelemiumでブラウザコントロールしてもいいかもしれません。 こちらはほとんど試していません。 また、GoogleSpreadSheetからのスクレイピングでは ブラウザコントロールは難しいので Postなどでユーザー/パスワードを送ることになり HTMLの解析がけっこう手間がかかるかもしれません。 PhantomJSCloudについては調べきれていません。 アドバイス、回答くださったみなさま、ありがとうございます。