すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

googleの検索を、通常のGoogleポータルサイトから行うのではなく、自作プログラムの内部処理にして、その結果のHTMLファイルからある文字列を抜き出すプログラムを作りたいのですが、
googleで検索を実行するときに実際にサーバーに送られているHTMLの内容を調べるにはどのような方法があるのでしょうか?

  • 質問者:ss
  • 質問日時:2009-01-31 21:18:11
  • 0

並び替え:

GETメソッドで、URLをHTTPダウンロードして来れば出来ますよ。

  • 回答者:sooda (質問から7日後)
  • 0
この回答の満足度
  

調べると言うよりも仕様で決まっていますので、その仕様に沿ってリクエストを出せばOKです。

例えばGoogleの検索窓のFormを調べて以下の様に書いてあれば…

<form method=get action="http://www.google.co.jp/search">
<input type=text name=q size=31 maxlength=255 value="">
<input type=hidden name=ie value=Shift_JIS>
<input type=hidden name=oe value=Shift_JIS>
<input type=hidden name=hl value="ja">
<input type=submit name=btnG value="Google 検索">
</form>

このフォームはGetメソドであり、その引数はq、ie、oe、hl、btnGである事が分かります。そのうちie、oe、hlは隠し領域で、btnGも含めて既に値が決まっている事も分かります。

Getメソドである事からURL中に各引数を記述できるので、先ずはこれらの隠し領域を抽出しキーと値を『=』で繋ぎ、更にそれぞれのフィールドを『&』で繋いで定数化し、URL作成の準備をします。

ie=Shift_JIS&oe=Shift_JIS&hl=ja&btnG=Google 検索

また検索窓に入力した文字は『q=』の後に続けて制限値の255文字以内で入力し、同じく『&』で繋ぎます。最後にFormの宛先である

<form method=get action="http://www.google.co.jp/search">

からURLに続けて『?』で引数である事を明示して

http://www.google.co.jp/search?q=xxxxxxx&ie=Shift_JIS&oe=Shift_JIS&hl=ja&btnG=Google 検索

と繋げます。上の例ではxxxxxxxが検索窓に入力した文字列になります。

最後にこのままではバイナリコードがインタネットに流れますので必ずURLエンコードして下さい。これを使ってHTTPリクエストを送信すればレスポンスヘッダと共に検索結果を送ってきます。Cookieや認証等は同時に処理してください。リクエストの方法や各種の処理は処理系で異なるので省略します。

で、これでは『サーバに送られているHTMLの内容を調べる』回答になっていないかも知れないので、他の方法を書きますと…プロクシ機能を持ったロガーを自分のマシンに作り、そのログを調べる手も有ります。でも、そんな事をするよりも仕様に従った方が良いかと思います。

この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。

GETメソッドですから、
そのままのURLをHTTPダウンロードして来ればいいと思いますよ
ブラウザで開く必要もないですから、
そのままファイルのGREPに入れば良いのでは。

  • 回答者:POSTではない (質問から2時間後)
  • 0
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。

このサイトが参考になると思います。
検索窓のコードが公開されてます:
http://www.google.co.jp/intl/ja/searchcode.html

  • 回答者:匿名希望 (質問から2時間後)
  • 0
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る