本記事では「VBAでIEを使ってサイトのページ内の文章を取得し、その内容をシートに書き込む」という内容で解説していきます。
また、今回のテクニックは『HTML』の知識が若干必要になります。
なので、細かい説明は下の記事と同じになるので、本記事を読んで分からなかった場合は読んでみてください。
【VBA】Google検索結果画面の情報を取得する【IEを操作する】
VBAではシート内だけではなく、ネットの情報も扱うことができます。
そして、その方法はいくつかありますが、本記事ではIE(Internet Explorer)を操作したやり方を紹介します。
また、本記事のゴールは「検索エ...
注意スクレイピングとして活用することはお勧めしません。
著作権法やサーバーへの過度な負荷に繋がりますので、利用には十分注意してください。
では、さっそく解説していきます。
ページ内のテキスト(文章)を取得する
下が「指定したURL(11行目)のページの文章部分を取得する」コードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Sub sample() ' --- IEを表示(起動)する Dim objIE As Object Set objIE = CreateObject("Internetexplorer.Application") ' IEオブジェクト objIE.Visible = True 'IEを表示 ' --- Googleの検索画面を表示する ' 今回は「VBAとは」で検索する Dim searchURL As String ' 表示するURL searchURL = "https://取得したいURL" objIE.Navigate searchURL '指定したURLを開く ' --- 画面が表示されるまでの待機時間を設定する ' ※画面がしっかり表示されないとエラーが生じる Application.Wait Now() + TimeValue("00:00:05") ' --- ページ内の文章を全て取得する ' ページ内の文章は"entry-content cf"クラス内の"p"タグで括られている Dim htmlDoc As Object Set htmlDoc = objIE.Document Dim pageSentences As Object Set pageSentences = htmlDoc.getElementsByClassName("entry-content cf")(0).getElementsByTagName("p") ' --- 取得したページ文章をシートに書き込む Dim i As Long Dim sentence As Variant For Each sentence In pageSentences i = i + 1 Sheets("Sheet1").Cells(i, 2).Value = sentence.innerText Next ' --- IEを閉じる objIE.Quit Set objIE = Nothing End Sub |
6行目:IEを起動する
13行目:指定したURLのページを表示する
21~25行目:ページ内の文章部分を全て取得する※ページのHTMLの「entry-content cf」クラスの「p」タグの値を全て取得
31~34行目:上で取得したページの内容を指定したシートに書き込む ※ページの1行ずつセルに書き込まれる
上を実行すると下のような結果が得られます。※下は本サイトの1ページを取得しています。
〇おすすめのVBA参考書ランキング!
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク