« ココログ:外れている内部リンクを探す | トップページ | エリザベス・ウィルソン「ラブ・ゲーム テニスの歴史」白水社 野中邦子訳 »

2018年11月11日 (日)

ココログ:各月のURL一覧から全公開記事をダウンロードするVBScript

ココログ:外れている内部リンクを探すから続く。

【はじめに】

 最終目的は「ココログの私の全公開記事から、外れている内部リンクを探し、タブ区切りテキストで書き出す」ことだ。そのためにやる事は幾つかある。

 ここでは、私が公開している全ブログ記事のHTMLをダウンロードする。

【具体的には】

 URLの一覧を読んで、その全頁をダウンロードし、一つのファイルに書き出す。

【欠点】

 このスクリプトには欠点がある。

 正確には、恐らく幾つかある欠点のうち、一つだけはハッキリわかっている。一カ月に25~26件以上の記事を書いている場合、たぶんこのスクリプトでは上手くいかない。

 このスクリプトは、月別アーカイブを全部ダウンロードする。それだけだ。この方法だと、幾つかの記事は取りこぼすかもしれない。

 ココログのカテゴリー別のアーカイブは、ちと複雑な構造になっている。例えば「日記・コラム・つぶやき」のアーカイブを見て欲しい。最近の10件の記事は、全文が載っている。それより前の記事は、下のほうに記事名の一覧が出ているだけだ。古い記事の記事の中身を見たいなら、記事名からリンクを手繰らなきゃいけない。

 月別のアーカイブも、似たような形になっている…と、思う。とまり、「最近の25件」ぐらいまでは、各月のアーカイブに全文を載せ、それより前の記事は記事名だけを載せる、そんな感じだろう。

 私が一カ月に書く記事は、多くても20件ぐらいだ。だから、全月のアーカイブをダウンロードすれば、公開記事を全部ダウンロードできる。

 でも、毎日記事を書いているなら、このスクリプトじゃ、月の頭に書いた記事を無視してしまう。

 このまま使う人はまずいないと思うが、そういう欠点がある(というか、現時点で少なくともこの欠点だけはわかっている)由をご了解願いたい。

【使い方】

 次のプスクリプト(crowl.vbs)に、URL一覧のファイルをドラッグ&ドロップする。巧く動いたら、、公開記事の全文が入ったファイル res.html ができる。 

【ソース】

' crowl.vbs アーカイブからクロール vbs5.8
Option Explicit
Dim WSH : Set WSH  = WScript.CreateObject( "Wscript.shell" )
Dim FSYS: Set FSYS = WScript.CreateObject( "Scripting.FileSystemObject" )

' ダブルクリックで起動したら使い方を示して終わる
if WScript.Arguments.length <> 1 then
    Call MsgBox( "クロール先一覧をD&Dしる" )
    WScript.Quit
end if

' D&Dしたファイル名からフルパスと親フォルダを得る
Dim cName   : cName     = WScript.Arguments.Item(0) ' D&Dしたファイルのフルパス
Dim cFolder : cFolder   = FSYS.getParentFolderName( cName ) & "\" '親フォルダ名
                                    ' クロール先一覧をリストcURLsに読み込む
Dim cURLs
Set cURLs = CreateObject( "System.Collections.ArrayList" )
Dim cFile
Set cFile = FSYS.OpenTextFile( cName, 1, False, 0)
If Err.Number <> 0 Then
    Call MsgBox( "Code:" & Err.Number & " :Can not open " & cName )
    WScript.Quit
end if
Do Until cFile.AtEndOfStream
    Dim cLine : cLine = cFile.ReadLine
    cURLs.add( cLine )
Loop
cFile.Close()
'               クロール
Dim aURL, aBuf
aBuf = ""
For Each aURL In cURLs
    Dim aHttp
    Set aHttp = WScript.CreateObject( "MSXML2.XMLHTTP" )
    aHttp.Open "GET", aURL, False
    aHttp.Send
    aBuf = aBuf & aHttp.ResponseText
Next
'                                           結果をres.htmlに書き出す
Dim oFile
Set oFile = CreateObject( "ADODB.Stream" )
oFile.Charset = "UTF-8"
oFile.Open
oFile.WriteText( aBuf )
oFile.SaveToFile cFolder & "res.html", 1    '追加書き
oFile.Close

Call MsgBox( aURL & ":" & aHttp.Status & ":" & aHttp.statusText ) : WScript.Quit

【URL一覧】

 上のスクリプトにドラッグ&ドロップする「URL一覧」は、テキストファイルだ。中身はこんな感じ。1行にURLが1個書いてある、それだけ。

http://chikuwablog.cocolog-nifty.com/blog/2018/11/index.html
http://chikuwablog.cocolog-nifty.com/blog/2018/10/index.html
http://chikuwablog.cocolog-nifty.com/blog/2018/09/index.html
 ¦
http://chikuwablog.cocolog-nifty.com/blog/2007/01/index.html

 どうやって作ったか、というと。

  1. バックナンバー」のHTMLをテキスト・エディタにコピーする。
  2. 要らない行を削除する。
  3. <a href=" と ">.*</a><br /> を一括変換で削除(空文字列に変換)する

 と、ほぼ手作業で作りました、はい。

【関連記事】

|

« ココログ:外れている内部リンクを探す | トップページ | エリザベス・ウィルソン「ラブ・ゲーム テニスの歴史」白水社 野中邦子訳 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ココログ:各月のURL一覧から全公開記事をダウンロードするVBScript:

« ココログ:外れている内部リンクを探す | トップページ | エリザベス・ウィルソン「ラブ・ゲーム テニスの歴史」白水社 野中邦子訳 »