検索結果のURLの取得

このQ&Aのポイント
  • ExcelVBAの初心者が検索結果のURLを取得する方法について相談しています。
  • エクセルのキーワードを検索し、上位3つのURLを自動で取得する方法をExcelVBAで実現したいと考えています。
  • 具体的には、キーワードをコピーして検索サイトで検索し、検索結果の上位3つのURLをキーワードの右側にペーストする作業を自動化したいです。
回答を見る
  • ベストアンサー

検索結果のURLの取得

こんにちは、ExcelVBAの初心者です。 上司から検索サイトでの検索結果に出てくる上位URLをコピー&ペーストするように指示を受けたのですが、作業が大変で全然進まず困っています。 もしからた、ExcelVBAで解決できるのではと、ご相談させて頂きました。 具体的には以下のような作業を手作業でやっています。 これを自動化することは可能でしょうか? 1.エクセルに検索するキーワードがセル(A列)ごとにおさめられています。 (セルには2つのキーワードが入っていてand条件となります) 2.それをコピーしてyahooかgoogleで検索をします。 3.検索結果の上位3つまでのURLをコピーして、キーワードの右側のセルにペーストしています。(スポンサードサーチなど広告系は含みません) 【イメージです】         A            B              C     ―――――――――――――――――――――――――― 1|カメラ SONY     |________|______ 2|電子レンジ シャープ|________|______ 3|冷蔵庫 日立     |________|______             ↓         A            B              C     ―――――――――――――――――――――――――― 1|カメラ SONY     |www.sony.jp/dslr|www.sony.co.jp 2|電子レンジ シャープ|healsio.jp     |www.sharp.co.jp/sup 3|冷蔵庫 日立     |________|______ 素人で実現可能なのかも分かりませんが、もし分かる方がいらっしゃいましたら何卒お知恵をお貸しください。 どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

利用規約に抵触しているようです。 接続に関する問題: ネットワークで表示される「申し訳ありません」ページ http://www.google.co.jp/support/websearch/bin/answer.py?hl=jp&answer=86640 サービス利用規約 http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5689504

mika_1986
質問者

お礼

ご回答ありがとうございます。 やっぱりなかなか上手くいかないものですね。 VBAでは無理ということが分かっただけでも良かったです。 地道に手作業でやっていきます。 ご親切にいろいろありがとうございました(^^

その他の回答 (3)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

Dim i As Integer myUrl = "http://www.google.co.jp/" For Each myWindow In CreateObject("Shell.Application").Windows With myWindow '//Google If .LocationURL = myUrl Then For Each c In Sheets("Sheet1").Range("A1:A10") i = 0 上記の部分を下記に変えてください。 検索キーワードが、連続で入力されている範囲を取得します。 数千行あると、どれほど時間がかかるか解りません。 検索キーワードの数を減じた、ダミーシートでテストしてください。 Dim i As Integer Dim drng As Range With Sheets("Sheet1") Set drng = .Range("A1", .Range("A1").End(xlDown)) End With myUrl = "http://www.google.co.jp/" For Each myWindow In CreateObject("Shell.Application").Windows With myWindow '//Google If .LocationURL = myUrl Then For Each c In drng i = 0

mika_1986
質問者

補足

回答ありがとうございます。 10行以上目移行も動いてくれるようになりました。 ただ、しばらく検索(50~100行)くらい進むと下記の英文が表示され、検索が出来なくなってしまいます。(自動化に対してのエラーでしょうか?) これは、もう仕方ないのでしょうか? それともYahooなどですと起こらないのでしょうか? ----------------------------- We're sorry... ... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now. See Google Help for more information. -----------------------------

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

とりあえず、検索結果のURLを3つ抽出します。 適当に条件を付けています。 厳密に上位の3つというわけではありません。 Sheet1のA1:A10に検索キーワードと仮定 検索キーワードが数千行もあると、どれほど時間がかかるか解りません。 Sub test1() Dim myWindow As Object Dim myUrl As String Dim tmp As Object Dim myLink As Object Dim c As Range Dim i As Integer myUrl = "http://www.google.co.jp/" For Each myWindow In CreateObject("Shell.Application").Windows With myWindow '//Google If .LocationURL = myUrl Then For Each c In Sheets("Sheet1").Range("A1:A10") i = 0 '//Google検索 .Document.all.Tags("input").Item("q").Value = c.Value .Document.all.Tags("input").Item("btnG").Click Call webReadyState(myWindow) '//検索結果抽出 For Each myLink In .Document.Links If InStr(myLink, "google") = 0 Then If InStr(myLink, "%") = 0 Then If Right(myLink, 1) = "/" Then i = i + 1 c.Offset(, i).Value = myLink End If End If End If If i = 3 Then Exit For Next myLink .GoBack Call webReadyState(myWindow) Next Exit For End If End With Next myWindow Set tmp = Nothing End Sub Sub webReadyState(myWindow) With myWindow Do While .Busy = True DoEvents Loop Do While .ReadyState <> 4 DoEvents Loop End With End Sub

mika_1986
質問者

補足

回答ありがとうございます。 希望通りの動きでした!(^^ ただ、どうしても10行目で止まってしまいます。 10行目以降も取得を自動で進めることが出来ないでしょうか?

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

とりあえず下記のようにしてみました。 IEでGoogleを開いている状態で実行してください。 Dim myWindow As Object Dim myUrl As String Dim tmp As Object Dim i As Integer myUrl = "http://www.google.co.jp/" For Each myWindow In CreateObject("Shell.Application").Windows With myWindow '//Google If .locationurl = myUrl Then '//Google検索 .Document.all.Tags("input").Item("q").Value = Range("A1").Value .Document.all.Tags("input").Item("btnG").Click Do While .Busy = True DoEvents Loop Do While .ReadyState <> 4 DoEvents Loop '//検索結果抽出 If .locationurl Like "http://www.google.co.jp/search*" Then Set tmp = .Document.getElementsByTagName("a") For i = 0 To tmp.Length - 1 If tmp(i).innertext Like "*ソニー" Then MsgBox Range("A1").Value & vbLf & tmp(i).innertext & vbLf & tmp(i).href End If Next i End If .GoBack Exit For End If End With Next myWindow Set tmp = Nothing

mika_1986
質問者

補足

回答ありがとうございます(^^ イメージしているものにすごく近いです。 ボックスに入ってくるURLがB,C,D列に自動的に入っていくように出来ますでしょうか? あと、Excelに入ったの検索キーワードが数千行あるので、そのキーワードがgoogleの検索ボックスに自動的に入力されURLを取得し終わったら、また次の行のキーワードを、、、 と一連の作業がすべて自動的で出来るでしょうか? 難しいことをいってすみません。

関連するQ&A

  • 検索結果からURLだけをコピー&ペイストってできますか?

    こんにちは。 とてもざっくりとした質問で恐縮です。 Yahoo!検索エンジンの検索結果画面において 並んで表示される結果から各URLのみをコピー&ペイストしたいの ですが、現在手作業にて行っており、非常に困り果てております。 効率の良い手法はないでしょうか。 誠にざっくりとした質問で恐縮ですが、 どなたか、良い方法を思いつく方がいらっしゃいましたら ご教授賜れると幸いです。 何卒よろしくお願いいたします。

  • VBAで検索エンジンの自動検索とHP文章の自動収集

    VBAでYahooやGoogleの検索を自動でやることはできないでしょうか? キーワードのリストが1000個ほどあり、ネットで検索して上位に出ているサイトから文章をコピペしてまとめたいのですが、すべて手作業でやると途方もない作業量になってしまいます。 なので次のような作業をVBAやプログラミングで自動でやることはできないでしょうか? エクセルなどに入力されているキーワードで検索をする。 ↓ 検索エンジンの上位100サイト程度の中からキーワードと近接する文章をコピーする。 ↓ コピーした文章をエクセルなどにまとめる。 これを全キーワードについて自動でやってくれるようなプログラミングは可能でしょうか? あるいはすでにこういったソフトがあれば有料無料問わず教えてください。 キーワードに関する情報を集めることができればいいので必ずしも情報元は検索エンジンでなくても構いません。 例えばRSSの更新情報の中からキーワードに関する文章を集めてくるようなソフトでもかまいません。 よろしくおねがいします。 ※大学の研究のために使う予定です。

  • ホームページの検索結果について

    私は、素人ながら見よう見まねでホームページを作りました。 最初A社プロパイダーにて公開したのですが、半年くらい前に B社プロパイダーに変更しました。A社の時に「○○専門店○○」 のキーワードで検索すると上位にきていました。ところがB社にしても それが今も残っています。検索結果を上位に残したままB社に変更 することは出来ますか。教えてください。

  • 検索結果が○件以下だったら隣に○

    C1から下へずらーっと、キーワードや文章が記入されています。 このセル内のキーワードをGoogle検索して、『検索結果が○件以下だったら隣に○』 という風に分けていきたいです。 こういう作業は、マクロでできるでしょうか? どのような記述でできますか? EXCEL2016です。 よろしくお願いいたします。

  • HPキーワードが検索にトップにいくようにしたいのですが。

    といいましても、すべてのホームページ運営者の悩みだと思いますが・・・。 最近、ヤフーがロボット検索になったので、いつものキーワードが だいぶ後退してしまいました。 いつもトップだったのに・・・。 さて、対策としてブログやメルマガをコピー&ペーストして、HP内の専用ページに貼り付けて、ホームページが毎日更新されるようにしようかな・・・ と思いますが、こういう形で、キーワードは上位に戻るものなのでしょうか。

  • Googleの検索に全然引っ掛かりません

    Googleの検索に全然引っ掛かりません。 http://www.○○.comとurlをいれても検索引っ掛からないのはインデックスが登録されていないのでしょうか? またHPタイトルやページ内のある一行をコピーして検索をかけても0件と出ます。 gooでもかかりません。 既に立ち上げてから数カ月たちます。 以前ある(仮にA.com)というWEBをずっと運営していて「○○」というキーワードで上位に挙がっていました。 わけあってドメインを変更(b.com)。内容はほぼ同じです。A.comはジャンプページに設定。 「○○」いうキーワードでは今、aもbも挙がりません。 google「サイトの登録」済みです。 Yahooのページ検索では「○○」というキーワードで上位です。 Yahooディレクトリサーチにも登録済み。 不思議です。困っています。

  • 一人暮らしを始めるため、家電をそろえようと思っています。

    一人暮らしを始めるため、家電をそろえようと思っています。 冷蔵庫、洗濯機、電子レンジの3点の購入を考えています。 メーカーに関しては、「日立」がいいのかなと思っています。 (日立はモーターなどが強いと聞いたことがあるので) 冷蔵庫では「R-27ZS」の購入を考えています。 いろいろ調べたのですが、わからないことがあります。 (電機屋に行ってみたのですが、本品がありませんでしがので、聞けませんでした。) 借りる部屋(キッチン)が狭いので、冷蔵庫の上に電子レンジを載せたいと思っています。 このタイプは電子レンジを載せることが出来るのでしょうか? 高さは150cmほどなので低いので、載せられるのではと思うのですが、日立のホームページ の製品情報にも載っていません(私が見つけられなかったのかも知れませんが。) どなたかご存知の方がいますでしょうか。 アドバイスをよろしくお願いいたします。

  • 教えてください

    VBAでデータを検索してそのデータを別のセルにコピー、ペーストする方法を教えてください。 まず、InputBoxにキーワードとなる文字を入力してもらい、それに合うものをデータの中から探し出し、別のセルにコピーしたいのですが・・・・。 入力してもらう文字は  例)  AB-C  123456      こんな感じです。 既にあるデータからこの文字列に合うものを検索してその行をコピーし別の指定した行にペーストしたいのです。 合うものがなかった場合”データはありません”と表示もしたいのですが・・・。 多分、慣れている方にはとても簡単な作業であるとは思いますが私はVBA初心者にも関わらず 早急に作成するように頼まれてしまいました(涙 どなたか哀れな私を救ってください。

  • 家電品寿命

    ばらつきあると思いましたが質問します シャープの冷蔵庫、電子レンジ だいたいどのくらい持ちますか? 参考までにお願いいたします

  • 数値を検索して、その隣に転記をするマクロを作りたい

    写真のようにA2に入力した列を検索して、B2の内容を入力するようなマクロをつくりたいのですが、どのように書けばよいのでしょうか? 手順としては、 1)B2の値をコピー 2)A列の番号を検索 2)その一つよこのセルにB2のデータをペースト という簡単なもののはずなのに全く思い浮かびません。

専門家に質問してみよう