[Nodejs] APIを利用せずにWEBサービスを利用したい。 #1「Google検索をして初回ページをスクレイピングする」

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

Googleの検索エンジンがSSL対応してから、リファラも取得できないので、検索キーワードがWEBサイト側から取得できなくなり、非常に不便に感じていますが、YahooもGoogleエンジンを採用し、SSL対応もしてしまったので、マーケティング市場は大混乱していますね。

検索をAPI使わずに行いたい

最近、OpenIDやら、TwitterBotやら、SNSの情報取得やら、やたらとAPIで連携するサービスが増えてきました。
ログイン認証などは、新たにサービスにIDとパスワードを登録する手間がいらないので、便利っちゃ〜便利なんですが、連携サービス側としては、keyの取得をしたり、なんやらワケの分からない認証コードを登録したりして、非常に面倒くさい事この上ないです。

さらに、TwitterのAPIで言えば、たまにエラーが出てサーバーのBOT連動などがコケるパターンが増えてきたり、手動だったら問題ないがサーバーで自動化しているモノに関しては、「規定違反」とされて勝手にリジェクトされたりする始末です。

こういう面倒くさい感じであれば、むしろAPIなど利用せずに、こちらのサーバーからどうどうとサービスを利用しに行こうじゃないかと考えて、サーバースクレイピングを発展させてみました。

Googleの検索エンジンを取得しちゃえ

今回は第1弾としてGoogle検索を簡単に行なってみたいと思います。

モジュール構成

OS:CentOS 6.5
webアクセス:Apache
WebSocket:NodeJS(port:3336)

サンプルサイト

http://bit.ly/1lIeGD7

使い方

検索キーワードを入力して「検索」ボタンを押すだけです。
検索結果のページから、「件数」「タイトル」「URL」「サンプル文章」などをJSON形式で画面下段に表示します。

解説

WEBページ側の解説は省いて、NodeJS側のソースコードを公開しておきます。
「QS」ライブラリは、Socket.IOがPOSTでデータを受け取る時に必要なライブラリです。

ちなみに、このコードはGoogleの2015/11/22現在における検索ページのスクレイピングなので、以後にこのページの構成が変わった場合はデータの取得ができません。

構成は大きく4つあり、

1、Googleの検索WEBサイトをspookyjsでアクセス。
2、POSTで受け取った検索キーワードを検索フォームに入力
3、Googleページにある検索フォームをSUBMITする。
4、検索結果のページから、各種情報を取得する。

このプログラムをnodeコマンドまたはforeverコマンドで起動しておくだけです。
ページをHUCKすれば、HTML、JS、CSSなどをぶっこぬいて、同じ構成のサーバーを立ち上げることは簡単にできますが、初心者の方でどうしてもプログラムが欲しい方はメールかメッセージでご依頼ください。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です