自分方位研究所

日々の活動記録

はてなブログ 「記事の管理」ページをExcel VBAにて制御

はてなブログ 「記事の管理」ページのソースコードを取得しようとしていますが、ページ上でマウス右クリックでのソースコード表示では、記事の情報が見れないので、Excel VBAを使用して、ページ全体のHTMLドキュメントを取得することにしました。

誰か同じようなことをやっていないかなと調べてみたところ、Excel VBAによるIE制御の大家、三流君が動画の解説付きで説明されていました。

はてなブログを使用されていて、各種コードを紹介されています。
その中で今回役に立ったのが

「ブログの記事管理 検索条件に値を入れて検索ボタンを押し編集記事を探す」

という一連の記事です。

「三流君のソースコード置き場」トップページのリンクを貼っておきます。
このページを下へスクロールしていくと、はてなブロク関連の記事が紹介されています。

ken3code.hatenablog.jp

動画と一緒に、Excel VBAのソースコードも掲載されており、早速コードをコピーして、走らせてみました。

このプログラムは、はてなブログの「記事の管理」ページ上で、記事検索を利用して、既に投稿してある記事の中から、特定の文字列を含む記事を選び出し、記事の編集画面を表示させ、その特定の文字を別の文字に置換後、保存する。という処理を自動で行うものです。

 

実際に動かしてみると、エラー無く動いていることは動いているのですが、検索窓に、検索すべき文字列は貼りつけられるのですが、検索ボタンが押されずに一番上に最初から表示されている記事を表示して閉じる、という動作にしかなりません。

おそらく、「記事の管理」ページの検索関連のタグが仕様変更になっているようで、検索ボタンが押されないのでしょう。記事の投稿日を確認すると2018年6月ということで、ほぼ2年前。その間に変更になっていたのでしょう。

はてなブログの管理画面の、検索関連部分のソースコードを確認すると

========================================
<button class="entry-search-input-button" aria-label="記事を検索" type="submit">
<i class="blogicon-search"></i>
</button>
<input name="q" class="entry-search-input js-entry-search-box-input"
aria-label="記事を検索" type="search" placeholder="記事を検索">
========================================

 

三流君のコードは以下のようになっていたのですが

↓--------------------------------------------------

For Each objINPUT In objIE.document.getElementsByTagName("input")
If objINPUT.Value = "検索" Then
objINPUT.Click 'クリック処理

↑--------------------------------------------------

現状のはてなの検索ボタンを押すには、

<button type="submit">をクリックするようにしないといけません。

↓--------------------------------------------------

For Each objINPUT In objIE.document.getElementsByTagName("button")
If objINPUT.Type = "submit" Then
objINPUT.Click 'クリック処理

↑--------------------------------------------------

以上の点を変更すると、うまく検索してくれるようになりました。

 

前置きが長くなりましたが、とりあえず私がやりたかったことは、この「記事の管理」ページのソースコードを取得することで、それは 三流君の作成したExcel VBAのコード中の 「 objIE.document 」をそのまま利用して、

objIE.document.all(0).innerHTML

とすることで中身を見ることができました。

<tr class="tr-hover "> ~~~</tr> のタグの中に1記事分の情報が入っています。
今回試してみた管理画面には、記事が20個表示されており、この<tr class="tr-hover ">タグも、20個確認できました。

あとは、取り出したソースコードから、記事情報を取り出していくだけです。

これも全記事を手作業でやるわけにはいかないので、Excel VBAにて自動化していきます。