本記事はこんな方におすすめ
- ブログ競合調査を効率化させたい人向け
- ブログ競合調査ツールを作りたい人向け
- ブログ競合調査ツールのコードが知りたい人向け
ブログ競合調査ツールってどんなもの?
ブログ競合調査ツールとは、ブログを書く時に行っている競合ブログの構造を把握するためのツール。
なぜそんなツールが必要かと言うと、ブログの検索順位を上げるためには実際に上位表示されている記事を参考に作っていくのが一番効率的だからです。
具体的にブログ競合調査ツールがどういった物かと言うと、『設定したキーワードで検索した結果TOP10位以内にいる記事のタイトル・URL・H2タグ情報を全て取得しExcelに一覧表示させる』ものですね。
私がブログ記事を書く時にはブログのタイトルとH2タグ情報さえあれば、そのブログに何が書いてあるのか大体わかります。
ただ、H2タグの情報が非常に分かりにくい場合もあるので一緒にURL情報も載せて、分からない時だけ直接ページを見る感じ。
他にも「H3情報も欲しい!」とか「文字数も知りたい」とか「キーワードの数も重要!」とか色々あると思いますが、私がブログを書く時にはあまり重要視してないので今回はそのような機能を入れていません。
あくまで、自分がブログを書く時に必要な情報だけの取得になっています。
それでは、次からは本格的にブログ競合調査ツールの作り方について紹介していきますね。
ブログ記事作成する時に便利な競合調査ツールの作り方【C#プログラミング】
まずはこちらがブログ競合調査ツールのコードになります。
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 78 79 80 81 82 83 84 85 86 87 88 89 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; using ClosedXML.Excel; namespace ブログ競合チェックツール { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var IE = new SHDocVw.InternetExplorer(); object URL = "https://www.google.com/"; IE.Navigate2(ref URL); Thread.Sleep(2000); var doc = IE.Document as mshtml.IHTMLDocument3; doc.getElementsByName("q").item(0).innerText = textBox1.Text; doc.getElementsByName("btnK").item(0).click(); Thread.Sleep(2000); var book = new XLWorkbook(); var sheet = book.AddWorksheet("ブログ調査"); int row = 1; sheet.Cell(row,1).Value = "title"; sheet.Cell(row, 2).Value = "URL"; sheet.Cell(row, 3).Value = "h2"; dynamic g; string[] jag = new string[10]; int jag_count = 0; for(int count = 0;count < doc.getElementsByTagName("div").length; count++) { g = doc.getElementsByTagName("div").item(count).getAttribute("className"); if(g == "g") { jag[jag_count] = doc.getElementsByTagName("div").item(count).getElementsByTagName("a").item(0).getAttribute("href"); jag_count++; } } jag_count = 0; while (jag_count < 10) { URL = jag[jag_count]; IE.Navigate2(ref URL); Thread.Sleep(5000); row++; try { sheet.Cell(row, 1).Value = doc.getElementsByTagName("h1").item(0).innerText; } catch { } sheet.Cell(row, 2).Value = jag[jag_count]; for (int column = 0; column < doc.getElementsByTagName("h2").length; column++) { sheet.Cell(row, column+3).Value = doc.getElementsByTagName("h2").item(column).innerText; } jag_count++; } saveFileDialog1.ShowDialog(); book.SaveAs(saveFileDialog1.FileName + ".xlsx"); Application.Exit(); } } } |
順番に解説していくと、
1 2 3 4 5 |
var IE = new SHDocVw.InternetExplorer(); object URL = "https://www.google.com/"; IE.Navigate2(ref URL); IE.Visible = true; Thread.Sleep(2000); |
Internetexplorer(マイクロソフトのブラウザ)でgoogle検索のトップページを表示して2秒待機。
googleのページが完全を完全に表示させるためにスリープを入れて処理を中断しています。
ページの読み込みを調べるコードもあるんですけど、なんかうまくいかなかったので今回はsleepで代用。
1 2 3 4 |
var doc = IE.Document as mshtml.IHTMLDocument3; doc.getElementsByName("q").item(0).innerText = textBox1.Text; doc.getElementsByName("btnK").item(0).click(); Thread.Sleep(2000); |
googleの検索ボックスにキーワードを入れて検索ボタンをクリック。
ページを完全に表示させるため2秒待機。
1 2 3 4 5 6 7 |
var book = new XLWorkbook(); var sheet = book.AddWorksheet("ブログ調査"); int row = 1; sheet.Cell(row,1).Value = "title"; sheet.Cell(row, 2).Value = "URL"; sheet.Cell(row, 3).Value = "h2"; |
Excel用のシート作成。
シート名は『ブログ調査』。
1 2 3 4 5 6 7 8 9 |
for(int count = 0;count < doc.getElementsByTagName("div").length; count++) { g = doc.getElementsByTagName("div").item(count).getAttribute("className"); if(g == "g") { jag[jag_count] = doc.getElementsByTagName("div").item(count).getElementsByTagName("a").item(0).getAttribute("href"); jag_count++; } } |
googleの検索結果で表示された上位10位以内にいるサイトのURLを取得。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
while (jag_count < 10) { URL = jag[jag_count]; IE.Navigate2(ref URL); Thread.Sleep(5000); row++; try { sheet.Cell(row, 1).Value = doc.getElementsByTagName("h1").item(0).innerText; } catch { } sheet.Cell(row, 2).Value = jag[jag_count]; for (int column = 0; column < doc.getElementsByTagName("h2").length; column++) { sheet.Cell(row, column+3).Value = doc.getElementsByTagName("h2").item(column).innerText; } jag_count++; } |
googleの検索結果から取得したURLを参考に1つずつページへ飛んで『ページタイトル』『H2タグ情報』を取得してExcelに入れていきます。
ページタイトルが無いサイトもあったので、null対策として例外処理を入れています。
1 2 3 |
saveFileDialog1.ShowDialog(); book.SaveAs(saveFileDialog1.FileName + ".xlsx"); Application.Exit(); |
最後にExcelファイルの保存先の選択とExcelファイルの保存をしてアプリケーションを終了。
これで競合サイトのブログ情報が一覧で手に入れる事が出来ます。
自作したブログ競合調査ツールのメリット・デメリット
今回作ったブログの競合調査ツールのメリットは『ブログ執筆に必要な前準備時間の短縮』。
ブログを1つ1つ調べるのも時間がかかるし、ブログによっては目次が無い物もあるのでH2タグ情報だけ探すのも結構手間ですからね。
デメリットとしてはHTML構造がおかしいサイトが何件か見つかっており、H2タグ情報が正常に読み取れていません。
具体的にどんなサイトかと言うと、H2タグの中にさらにDIVとかSPANとか複数の階層があるようなものですね。
しかし、主な目的の『ブログ執筆に必要な前準備時間の短縮』には成功したので、ブログを書くのは楽になります。
動画での解説もあるので、こちらも合わせて参考にしてみてください。
自作したブログ競合調査ツールを使ってみた感想
今回作ってみたブログ競合調査ツールを実際に使ってみた感想としては、「粗が目立つものの必要な情報はしっかりと取れてる」そんな印象でした。
今後もブログを書いていこうと思うと、競合の調査って何度もやるのでどんどん効率化していった方が良いですね。
H2タグ情報が分かるだけでも、「自分のブログ記事に何が足りないのか?」「検索で上位表示させるためにはどんな情報が必要なのか?」が一目で分かるようになります。
今回はブログ競合調査ツールを作るための必要なコードを全部載せてみました。
誰でも使えるように作っていますので、気になった方は自作するときの参考にしてみてください。
ブログ記事の書き方が分からない方はこちらの記事も合わせて読んでみてくださいね。
-
月5万稼ぐブログの書き方【記事構成テンプレート付き】
本記事では、そのような悩みを解決します。 本記事はこんな方におすすめ ブログ初心者向け ブログで収益化できていない人向け ブログの書き方を知りたい人向け 本編に入る前に私がコピーライティ ...
続きを見る