
VBAでGoogle検索の上位にあるURL部分(添付赤枠部分)を抜き出そうとしております。
下記の様に、コードを書いてみましたが、★印、●印あたりが不明で望む結果が出力されません。
コードの不足部分を、どのようにしたら出力できますか?
Sub Google検索()
Dim ie As Object 'IEオブジェクト
Dim kensakugyou As Long
Dim kensakuretu As Long
Dim i As Long
Dim r As Long
Dim elm As Object
For i = 1 To 5
kensakugyou = i
kensakuretu = 1
'IEを起動する
Set ie = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
ie.Visible = True '見えるようにする
ie.Navigate "http://google.co.jp" '.Navigate で 指定したURLを開く
wait ie
ie.document.forms(0).Item("q").Value = Cells(kensakugyou, kensakuretu)
ie.document.forms(0).submit
wait ie
For Each elm In ie.document.getElementsByClassName("★★★★")
Range("B" & r).Value = elm.getElementsByClassName("●●●●")(0).innerText
r = r + 1 '表示行+1
Next
ie.Quit
Next
End Sub
Sub wait(ByVal ie As Object)
Do While ie.Busy = True
DoEvents
Loop
Do While ie.document.ReadyState <> "complete"
DoEvents
Loop
End Sub

A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ご質問の内容にある
>Google検索の上位にあるURL部分(添付赤枠部分)を抜き出そう
は、取得してみると、場所が違いますね。その一つ上の行に隠れているリンクが本物だと思います。ご要望があくまでも、赤枠の部分だったら私の解釈が間違えたことにはなりますが、そこをとっても意味がなかったものですから。
一行目は何か書き入れてください。
URL とサイト名?
ChildNodes は、分かち書きしていますが、一本にすると、どうもハングします。
With objIE
Set rs = .Document.getElementsByClassName("r")
If rs.Length = 0 Then Exit Sub
For i = 1 To rs.Length
Set obj = rs(i - 1).ChildNodes
hr = obj(0).href
Cells(i + 1, 1).Value = hr
Cells(i + 1, 2).Value = rs(i - 1).innerText
Next i
End With
No.1
- 回答日時:
こんにちは。
検索結果で生成されるHTMLをご覧になればわかると思いますが、ひとつの項目は以下のような構成になっています。
(長い属性は「~~」等で省略してあります)
ご質問の表示部分は、クラス_Rmのところにあたると思われますので、クラス名_Rmで収集すれば該当部分の要素を直接収集することが可能だと思います。
返り値は要素リスト(=配列に似たオブジェクト)になりますが、個別の要素を参照する際は添字(0、1、2…)で参照可能です。
ただし、この表示内容はHTMLであって、必ずしも、ご質問のタイトルにあるようなURLではないものと思います。
*********** 以下提示例の一項目分のHTML *************
********* (インデントは全角空白にしてあります) *******
<div class="g">
<div class="rc" data-ved="~~" data-hveid="41">
<h3 class="r">
<a nmousedown="~~" href="https://ja.wikipedia.~~">○ - Wikipedia</a>
</h3>
<div class="s">
<div>
<div class="f kv _SWb" style="white-space:nowrap">
<cite class="_Rm">
https://ja.wikipedia.org/wiki/△□
<b>○</b>
</cite>
<div class="action-menu ab_ctl">
<a id="am-b5" class="~~" jsaction="~~" aria-label="結果の詳細" href="#">
<span class="mn-dwn-arw"></span>
</a>
<div class="action-menu-panel ab_dropdown" data-ved="~~" jsaction="~~" tabindex="-1" role="menu">
<ol>
<li class="action-menu-item ab_dropdownitem" role="menuitem">
<a class="fl" onmousedown="~~" href="https://webcache.~~">キャッシュ</a>
</li>
<li class="action-menu-item ab_dropdownitem" role="menuitem">
<a class="fl" href="/search?~~">類似ページ</a>
</li>
</ol>
</div>
</div>
</div>
<span class="st">
株式会社△□
<em>○</em>
(みよまる、340)は、広島市安佐南区に本社を置く、事務用機械器具販売や内装工事などを専門とする株式会社である。 目次. [非表示]. 1 概要; 2 社名; 3 創業者; 4 事務所; 5 外部リンク. 概要[編集]. 創業者の福田剛が1970年に元になる会社を ...
</span>
</div>
</div>
</div>
</div>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
VBAから書き込んだ条件付き初期...
-
WindowsのOutlook を VBA から...
-
マクロの記録を使用したマクロ...
-
vbsでのwebフォームへの入力制限?
-
ダブルクリックで貼り付けた画...
-
エクエルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
vbs ブック共有を解除
-
VBAでFOR NEXT分を Application...
-
Excelのマクロについて教えてく...
-
Vba WorkBooks.Openについて教...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
[Excel VBA]特定の条件で文字を...
-
【VBA】値を変更しながら連続で...
-
vba textboxへの入力について教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPath指定方法について(phpで)
-
エクセル マクロ 複数のhtml...
-
HP作成のレイアウトで、ルーズ...
-
(再質問)エクセルのマクロボ...
-
汎用機のJCLの入門書ありま...
-
collection型を引数にしたファ...
-
鍵盤アプリで、スマホの画面に...
-
コンソール画面のクリアの方法
-
JavaScriptでチャート図を書き...
-
iText セル内での自動改行について
-
timeSetEventに対するtimeKillE...
-
【jQuery】MixltUPの複数フィル...
-
こんばんは。 メガメニューを今...
-
アコーディオンメニューにする...
-
<p> </p>ってまずいの?
-
Progateの入力画面で使えるショ...
-
Internet Explor...
-
Nivo Sliderのカスタマイズにつ...
-
プログラミング
-
Googleコンソールでサイトマッ...
おすすめ情報