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で質問しましょう!
似たような質問が見つかりました
- その他(ブログ) ブログを始めたいと思うのですが、下記のような場合のおすすめブログサービスを教えてください。 収益化な 4 2023/04/10 10:01
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- SEO SEOの検索順位について 例えばあるキーワードで検索順位が6位だとしたら、そのキーワードに関連する良 1 2022/06/30 21:51
- その他(ニュース・時事問題) 「戦争被爆国」があっても「戦争加爆国」はない。なぜ? 5 2023/05/19 09:27
- その他(ブラウザ) Googleのオートコンプリート機能について 2 2023/07/19 00:04
- ライフスタイル・ヘルスケア URLを開くアプリが見つかりません 2 2022/09/16 12:09
- SEO 検索候補に見られたくないキーワードがある 2 2022/09/19 17:34
- ヤフオク! ヤフオク タイトル 隠し技? 裏技? 1 2023/04/25 06:09
- InternetExplorer(IE) AIやばい「コピーキャット 語源」を検索した時のBingのサジェストがやばい 1 2023/07/25 03:56
- YouTube なぜYouTubeにはスカッとする話が大量に投稿されてるんですか? 検索キーワードになんの関連性もな 2 2022/10/26 15:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
ファイル名を今日の日付、時刻...
-
Powerpointでランダムな数字の...
-
ピボットグラフの書式の固定に...
-
VBAに詳しい方教えてください。
-
cellsで特定の離れた範囲を選択...
-
Pictures.Insertメソッド⇒Shape...
-
最初の1回のみにボタンクリッ...
-
エクセルVBAで、画像の倍率を知...
-
エクセルでツールバーに「縮小...
-
wordのマクロで縮小して貼り付...
-
VBAを使ってエクセルシート...
-
VBA[Private Sub]のコードをシ...
-
VBからPowerPointのマクロを実...
-
ユーザフォームをどの画面から...
-
エクセルで「ODBC Microsoft Ac...
-
【ExcelVBA】クエリの更新とピ...
-
エクセルワークシート上に印刷...
-
dreamweaver5の「コマンド-記...
-
VBAでのオートシェイプの整列機...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
VBAに詳しい方教えてください。
-
ファイル名を今日の日付、時刻...
-
cellsで特定の離れた範囲を選択...
-
エクセルシートをまとめて印刷...
-
VBA[Private Sub]のコードをシ...
-
Powerpointでランダムな数字の...
-
【ExcelVBA】クエリの更新とピ...
-
エクセル2007 テキストボ...
-
別ブックからユーザーフォーム...
-
エクセルのマクロでSelection.S...
-
Pictures.Insertメソッド⇒Shape...
-
ピボットグラフの書式の固定に...
-
どのドキュメントは暗号化され...
-
エクセルVBAで、画像の倍率を知...
-
最初の1回のみにボタンクリッ...
-
エクセルワークシート上に印刷...
-
VBAを使ってエクセルシート...
-
wordのマクロで縮小して貼り付...
おすすめ情報