プロが教えるわが家の防犯対策術!

VBAでYahooやGoogleの検索を自動でやることはできないでしょうか?

キーワードのリストが1000個ほどあり、ネットで検索して上位に出ているサイトから文章をコピペしてまとめたいのですが、すべて手作業でやると途方もない作業量になってしまいます。
なので次のような作業をVBAやプログラミングで自動でやることはできないでしょうか?

エクセルなどに入力されているキーワードで検索をする。

検索エンジンの上位100サイト程度の中からキーワードと近接する文章をコピーする。

コピーした文章をエクセルなどにまとめる。

これを全キーワードについて自動でやってくれるようなプログラミングは可能でしょうか?
あるいはすでにこういったソフトがあれば有料無料問わず教えてください。

キーワードに関する情報を集めることができればいいので必ずしも情報元は検索エンジンでなくても構いません。
例えばRSSの更新情報の中からキーワードに関する文章を集めてくるようなソフトでもかまいません。

よろしくおねがいします。

※大学の研究のために使う予定です。

A 回答 (2件)

そのようなソフトは知りませんし、ここで作り方を聞くには規模が大きすぎるので断片的に回答します。



可能か不可能か、という問いに対しては「可能」です。

検索エンジンの多くは、GETメソッドで処理されているので、検索用のURLクエリが解ればキーワード一覧を元に検索することはそれほど難しくはありません。
例えば、Googleの場合は
http://www.google.co.jp/search?hl=ja&num=100&q=[ここにキーワード]
というURLにアクセスすればキーワードで検索した結果が100件得られます。(ただし、キーワードはURLエンコードする必要があります)
ここからURLを抽出し、リンク先のページをダウンロードしてファイルとして保存。(一旦保存してから文章を探したほうが処理を細分化できます。)

とりあえずここまで出来るかやってみてください。これだけでもかなりのコード量になるはずです。
検索サイトへのアクセスは、Microsoft Web Browserコントロールでできます。
アクセスすればコントロールからHTMLソースを取り出すことが出来ます。
URLの抽出はHTMLソースから<A>タグを見つけることで出来ます。

ここまでで具体的なコーディング等が解らなければまた質問してください。
    • good
    • 0

Web BrowserコントロールでHTMLソースを取り出してパース(解析)


するよりは多少楽な方法を提案します。
(1)検索リクエストはYahooやGoogleの公開APIを使います。
-Yahooの場合
http://search.yahooapis.jp/WebSearchService/V1/w …
にパラメーターを付けてHTTP GETリクエストすると検索結果が
XML形式で返されます。( http://developer.yahoo.co.jp/webapi/search/webse … )
-Googleの場合
http://ajax.googleapis.com/ajax/services/search/ …
にパラメーターを付けてHTTP GETリクエストすると検索結果が
JSON形式で返されます。( http://code.google.com/intl/ja/apis/ajaxsearch/d … )
(2)HTTP GET のリクエストはMSXML COMオブジェクトを使って
GETできます。
Dim ObjReq As MSXML2.DOMDocument
Set ObjReq = CreateObject("MSXML2.DOMDocument")
とか
Dim ObjReq As MSXML2.XMLHTTP
Set ObjReq = CreateObject("MSXML2.XMLHTTP")
でオブジェクトを作って、
ObjReq.async = True
if ObjXml.Load("http://hoge.hoge/hoge?fuga=xxx&....") = true
then ....
で結果を取得する。
(3)結果のパース(解析)はXMLならMSXMLのメソッドやプロパティが
そのままつかえるので多少は楽、JSON(テキストデータ)の場合
VBAでそのまま使えないので面倒だが、VBAでJSONをパースする
ページを発見( http://d.hatena.ne.jp/so_blue/20090326/1238084885 )

といったプログラムを作ればよいと思う。

注意点として、結果は文字コードUTF-8で返ってくる(問題なさそう?)
リクエストはURLエンコードする必要がある。YahooやGoogleのAPIを使うためのキーを事前に取得する必要がる(ローカルだと何でもOKみたい?)

あんまり詳しく書けません。後はご自身で調べてみてください
面白そうなので、私も作ってみよう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!