
No.1ベストアンサー
- 回答日時:
こんばんは
IEで良いかな?持ち合わせの改造ですが
要、事前バンティング
Microsoft Internet Controls
Microsoft HTML Object Library
Option Explicit
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Sub GoogleSearch_Get_RelatedKeyword()
Dim objIE As New InternetExplorer 'IEのインスタンス
Dim datWait As Date, i As Long, n As Long
Dim keyword As String
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, i).Value <> "" Then '検索キーワード
objIE.navigate "https://www.google.co.jp/search?q=" & Cells(1, i).Value
datWait = Now() + TimeValue("00:00:10") '10秒後の時間を格納
Do
If datWait < Now() Then End '10秒以上経過したら強制終了
Call Sleep(50) '0.05秒中断
Loop Until objIE.Busy = False And objIE.readyState = READYSTATE_COMPLETE
objIE.Visible = False 'IE非表示
Dim htmlCls As IHTMLElementCollection
Set htmlCls = objIE.Document.getElementsByClassName("BNeawe s3v9rd AP7Wnd lRVwie")
For n = 1 To htmlCls.Length 'コレクション数でループ
Cells(n + 1, i) = htmlCls(n - 1).innerText
Next
End If
Next
Set objIE = Nothing
End Sub
1行目にキーワードがある時、2行目以下に関連キーワードを出力
(スクレイピングは対象に依存しますのでコードを理解する事が必要です)
回答ありがとうございます!
早速、マクロを記入して使ってみようと思いましたが、
マクロの実行の欄に、設定したマクロが見当たらないです。
おそらく、Sub 〇〇()と設定したないからだと思いますが、
実行はどこからするのでしょうか?
また、IEがサポート終了している。とのことですが、
それでもこちらのマクロは、使い続けられるのでしょうか?
そして、関連キーワードを取得する検索キーワードの数が300を軽く超えます。
それだけの量をマクロを使って取得しても問題ないでしょうか?
よろしくお願いいたします。
No.3
- 回答日時:
#1です
>マクロの実行の欄に、設定したマクロが見当たらないです。
状況がよくわかりませんが、参考程度ですが、導入方法です。
その前に
確かにIEがサポート終了していますので今後問題なく使用できるかは、解りません。
また、現状では使用できる(使用してます)と思いますが、奨めるべきではないかも知れません。
APIはともかくとして、SeleniumBasicなどを案内するべきだったと思います。
技術屋さんの日記帳
SeleniumBasicをインストールしてExcel(VBA)からWebスクレイピングを行うまでのチュートリアル
https://lil.la/archives/3436
SeleniumBasicを使用してChromeを操作する事でIE同様に操作する事が出来ます。
#1のExcelVBAでIEを使用してWEBスクレーピングのコードですが
テストをする場合、新規ブックを作成し
①使用するExcelでVBEを(Alt+F11で)開きます
②参照設定をツールから開きます(Alt+T、R)
項目から
Microsoft Internet Controls を探してチェックボックスにチェックを入れる
Microsoft HTML Object Library を探してチェックボックスにチェックを入れる
③標準モジュールを挿入します。(Alt+I、M)
④③で作成したモジュールのカーソルのある位置に
#1のコード Option Explicit 以下を全てをコピーぺします
(Microsoft Internet Controls、Microsoft HTML Object Library、は不要
Option Explicitが重複する場合はOption Explicitも不要)
*Option Explicitは無くても良い
表示されているシートの1行目にキーワードを書き
Sub GoogleSearch_Get_RelatedKeyword() を実行します。
トリガーはボタン登録でも Alt+F8キーでダイアログから選んで
実行でも良いと思います。VBEからであれば対象プロシージャにカーソルを置きF5キーや▷ボタンからでも良いです。
スタックや不具合を想定してコピペが終わったら一度名前を付けて保存するのが良いと思います。
>それだけの量をマクロを使って取得しても問題ないでしょうか?
InternetExplorerインスタンスとObject解放がループの外なので
スタックの可能性があるかも知れません。
スタックするようであれば、上記をループ内に入れてみてください。
取り敢えず、処理時間もそれなりにかかると思いますので
少量で試してみてください。
マクロ選択になかったのは、マクロをちゃんと設定できてなかったみたいです。
GoogleSearch_Get_RelatedKeywordを選ぶことで取得することができました!
どうもありがとうございます!
No.2
- 回答日時:
こんにちは
通常の検索結果を得るのなら、googleがAPIを公開していますけれど・・・
https://developers.google.com/custom-search/v1/o …
>Google検索結果の10位の下に出てくる関連キーワード
「10位の下」というのが何を意味しているのかわかりませんが(10位の下には11位が表示される)、表示ページの一番下に示されている「他のキーワード」のことと解釈しました。
もしもこれの意味であるなら、(確認してはいませんが)APIでは返されない情報と思いますので、実際にブラウザで検索を行って、その結果から抜き取るしかないように思われます。
>EXCEL2016を使っています。
とのことなので、まだIEが利用可能かもしれませんが、IEのサポートは終わっているように思いますので、Seleniumを利用したスクレイピングになるのではないかと思います。
https://note.com/teihen_escape/n/n40e672b1c97f
https://www.google.com/search?q=VBA+Selenium+%E3 …
(使える様であれば、IE経由の方がお手軽かも知れません。ネットにもまだ情報は沢山あります。)
検索結果の表示ページで「他のキーワード」の部分は、<div class="EIaa9b"></div>内に記述されているようですので、そこから抜き出すことになろうかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
確定申告しなかった・無申告の人をどうやって見つけるのか元国税調査官に聞いてみた
無申告の方などを対象に税務調査を行う国税局の元税務調査官さんに、どう無申告を探すのか聞いてきました。
-
VBA初心者です。不具合を直したい。
Visual Basic(VBA)
-
今からプログラマー目指す人はかわいそう
その他(プログラミング・Web制作)
-
Excelでコピーしたセル(テキスト)を保持し続ける方法ってありますか?
Visual Basic(VBA)
-
4
VBA 自作カレンダー コマンドボタンについて
Visual Basic(VBA)
-
5
プログラミングを仕事にしてますが、趣味で作りたいと思えません。 趣味で何が作れたら、仕事でアピールと
その他(プログラミング・Web制作)
-
6
文字列を繰り返して表示する VBA
Visual Basic(VBA)
-
7
ジャバスクリプトでのことですが(初心者なのでできるだけ専門用語は少なくしていたらければうれしいです)
その他(プログラミング・Web制作)
-
8
プログラミングに必要なソフト Python初心者です。 いざプログラミングを実行するにも必要なソフト
その他(プログラミング・Web制作)
-
9
vba vlookupできないけどvlookupのようなことをしたい場合 お世話になります。現在ツー
Visual Basic(VBA)
-
10
VBAをやり始めたのですが、なんでこうなるのか分かりません。 教えてほしいです。
Visual Basic(VBA)
-
11
PDFのフォーム機能を使ってドロップダウンに合わせた計算をさせたいです。
Visual Basic(VBA)
-
12
コマンドボタンのClickイベントとDblClickイベントの違いを認識させる方法
Visual Basic(VBA)
-
13
処理の呼び出し方
Visual Basic(VBA)
-
14
構造体を使用したデータの読み書き
Visual Basic(VBA)
-
15
VBAでメールを送る方法について
Visual Basic(VBA)
-
16
VBA 添付ファイルをつけてメールを送る方法について
Visual Basic(VBA)
-
17
Excel vba で条件分岐
Visual Basic(VBA)
-
18
エクセルのセル中で最初の0を表示する方法
Excel(エクセル)
-
19
VBA EXCELからメールを送る方法について
Visual Basic(VBA)
-
20
【Excel VBA】全シートのデータを1シートに集約するには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBAを使ってエクセルシート...
-
5
別ブックからユーザーフォーム...
-
6
cellsで特定の離れた範囲を選択...
-
7
エクセルシートをまとめて印刷...
-
8
VBA[Private Sub]のコードをシ...
-
9
エクセルVBAで、画像の倍率を知...
-
10
VBAで棒グラフの色を変えたい
-
11
【ExcelVBA】クエリの更新とピ...
-
12
ピボットグラフの書式の固定に...
-
13
グラフに条件付書式を設定でき...
-
14
VBからPowerPointのマクロを実...
-
15
エクセル vba クリック~離し...
-
16
エクセル2007 テキストボ...
-
17
最初の1回のみにボタンクリッ...
-
18
エクセルのマクロでSelection.S...
-
19
Wordのマクロから書式(O)⇒箇条...
-
20
Excel2007 [図形]マクロ記録
おすすめ情報
公式facebook
公式twitter