ブログの記事を書いている人の中には、競合サイトのブログ記事を調査(リサーチ)する人は多いです。
このリサーチ作業の目的は、競合ブログがどのようなキーワードを目次に入れているかを確認することにあります。
しかし重要なのは理解していていも、メンドウです。
・調査のとき、エクセルにコピペするのがメンドウ
・競合調査が多いと、どこまでコピペしたのか分からなくなる…
・でも、競合調査をしないと誰にも見られない記事になってしまう
そこで、競合ブログの記事の目次や記事タイトルを自動でエクセルに一覧にするツールを作成しました。
このツールを使うことで、以下のメリットがあります。
・10秒で狙っているキーワードで上位表示されている記事の目次を確認できる
・記事検索、目次コピペなどのムダな作業がなくなる
・記事内の上から順番にH2タグやH3タグ(見出し)情報を取得してテキストファイルに一覧にしてくれる
それでは以下で使い方について詳しく説明していきます。
目次
記事タイトル、目次(h2, h3)を自動取得するツールとは?
この記事ではエクセルVBAを使って、あるキーワードについてGoogle検索で上位表示される「検索順位」、「記事タイトル」、「H2タグ」、「H3タグ」の情報を一覧にします。
このツールを使えば、指定したページの目次を簡単に取得できます。
目次抽出ツールの注意点
このツールでは記事の目次がエクセルに出力されるように設計されています。
しかし記事の性質によっては、情報を取得できない場合があります。
実際、「社会人 勉強」のキーワードで情報を取得したとき、一部の結果を取得できませんでした。
必ずしもすべての情報を取得できるわけではないことを理解してください。
またスクレイピングそのものは悪用しないようにし、このツールを使用するのは個人の責任の範囲でお願いします。
ウェブスクレイピングツールのプログラムソースコードはこちら
このツールは一言でいえば、ウェブスクレイピングアプリです。
おそらくこの記事を読んでいる人の中には、プログラミングの勉強をしている人もいるはずです。
そこで、この記事で紹介しているツールのプログラムソースを載せておきます。ぜひ何かの参考に使ってください。
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
'変数設定の指定 Option Explicit 'プログラム開始 Sub GetSeveralWebPagesToText() 'シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") Dim cmax As Long cmax = ws.Range("B65536").End(xlUp).Row Dim mydata As Variant mydata = ws.Range("A1").CurrentRegion ' Dim path As String path = ThisWorkbook.path & "\" & "contents.txt" '新しく作成したテキストファイルを書き込みモードで開く Dim fs As New Scripting.FileSystemObject Set fs = New Scripting.FileSystemObject Dim txt As TextStream Set txt = fs.OpenTextFile(Filename:=path, IOMode:=ForWriting, Create:=True, Format:=TristateUseDefault) 'HTTPリクエストでデータ取得 Dim objHTTP As XMLHTTP60 Set objHTTP = New XMLHTTP60 Dim oHtml As New MSHTML.HTMLDocument Dim i As Long For i = LBound(mydata) + 1 To UBound(mydata) With objHTTP .Open "GET", mydata(i, 2) .send End With Do While objHTTP.readyState < 4 DoEvents Loop oHtml.body.innerHTML = objHTTP.responseText Dim title As String title = oHtml.getElementsByTagName("h1")(0).innerText Debug.Print title txt.WriteLine vbNewLine & title & vbNewLine Dim ObjTag As Object For Each ObjTag In oHtml.getElementsByTagName("*") 'Debug.Print ObjTag.tagName If ObjTag.tagName = "H2" Then Debug.Print ObjTag.innerText txt.WriteLine vbTab & ObjTag.innerText ElseIf ObjTag.tagName = "H3" Then Debug.Print vbTab & ObjTag.innerText txt.WriteLine String(2, vbTab) & ObjTag.innerText End If Next Next Set txt = Nothing Set fs = Nothing Set objHTTP = Nothing End Sub |
注意1|本ツールは完璧ではありません
本ツールは完璧なものではありません。たとえば、エラーでプログラムが止まったり、すべての目次を抽出できなかったりすることもあるはずです。
課題が発生したときは、ウェブで調査し自ら解決をしていってほしいと思います。
注意2|悪用しないこと
こちらの記事でも記載されていますが、悪意のあるスクレイピングは罰則を受けることにつながるリスクがあります。
私は法律の専門家ではないため、詳しくは上記の記事に譲りますが、節度をもってスクレイピングを使用することをお願いいたします。
節度を持った使用とは、具体的には以下の3つです。「著作権法上の問題」、「利用規約との抵触」、「サーバーへの過度なアクセス」です。
この記事でスクリプトを公開している理由は、よりよい情報をユーザーに提供するために必要な情報収集の効率化です。
したがって、スクレイピングをする目的を考え、悪意のある使い方はしないことを推奨します。
以上のことをご理解いただいたうえで、本プログラムを使用ください。何かあった場合は私は責任を負いません。
ダウンロードはこちら
以下のフォームから本記事で紹介したマクロが入ったエクセルをダウンロードできるようにしました。
メールアドレスを入力いただくと、この記事で紹介しているエクセルを添付したメールが送信されます。
興味がある人はご活用ください。