質問: Google検索結果に対して、スクレイピングを実行したい。 Webサイト上で、JavaScriptなどの処理で、 バックグラウンドでGoogleカスタム検索などを使用して、 複数サイトに対して検索後、Googleの検索結果に対して、 データを加工して、サイト上に一覧表示したいと考えております。 サーバー負荷を考慮して、クライアントサイドスクリプトのJavaScriptを 検討しておりますが、他に最適な言語はありますでしょうか? 【質問まとめ】 1.スクレイピングの実行処理をサイト閲覧者に分からないようにバックグラウンドで実行する事は可能でしょうか? 2.Google検索結果に対して、データを加工する事は可能でしょうか? 3.サーバ負荷が掛かりにくい最適な言語について 以上、ご教示頂けますと幸いです。 宜しくお願い致します。
回答: 質問の物言いに妙にひっかかるのですが、要するにこれまでのスクレイピングに対して、端的にいえば、 ・Ajaxなどを使い「jsベース」で描画するWebが増えたので、スクレイピングしにくい ・Ajaxで行っているDOM評価や値抽出は、従来のスクレイピングと同じことでは? ・サーバサイドスクレイピングの存在意義は? ということではないでしょうか。 「サーバ負荷を考えて」とかおっしゃいますが、そもそも以前から、クライアントサイドでAjax使いデータを取得するほうが、サーバでスクレイピングせるより何倍も簡単で、ただ処理系が泥臭いjavascriptしかなく、しかも処理内容が丸見えで、他人様のデータを勝手に吸い上げているのがバレバレ、ということだけで、負荷の問題ではありません。 そもそもサーバ負荷などというのは一般論ではなく、スクレイピング手法とサーバエンジンの組み合わせや、データ設計で決まる話なので、「サーバ負荷を考えてクライアントでjavascript」というのは論法がおかしいです。 サーバサイドでXmlHttpモジュールを動かして、Ajaxデータを直にスクレイピングすれば、負荷は非常に軽いし、現在のサーバサイドjavascriptエンジンも動作は最適化されており、きわめて高速に動作します。 「サーバでAjaxスクレイピング」というのは、HTMLページ上のjavascriptを読みだしてうんちゃらするクライアントベースとは、全然次元が違うのですわ。 結論から言えば、サーバサイド一択です。