例えば上記のような指定したURLから
リンク先URLと表示文字を下記の例のように
テキストまたはエクセルファイルに
抽出してくれるフリーソフトを探しています
テキストの体裁は
それほどこだわりません
(例)
電子政府の総合窓口
http://www.e-gov.go.jp/
総務省統計研修所
http://www.stat.go.jp/training/index.htm
独立行政法人統計センター
http://www.nstac.go.jp/
ものすごく特定の環境下、かつ手動、連続操作不可ですが、WebブラウザFirefox + メールソフトThunderbirdの組み合わせ(ともにフリーソフト)を使うと、こんなことができます。
1 メールソフトの準備
メールソフトThunderbirdで「新しいメッセージを作成」として、新規メッセージウィンドウをあらかじめ開いておく。
2 WebブラウザFirefoxで、任意のウェブサイトを表示させる。
3 その状態で、FirefoxのURLが表示されているテキストボックスに注目。
表示中サイトのURLの文字列の頭にある部分にマウスを当てると
「このアイコンをドラッグ&ドロップすると、このページのリンクが作成されます。」と、
表示されますが、その状態で、マウスをドラッグして、
Thunderbirdのメッセージウィンドウにドロップして下さい。
4 ドロップした先のメッセージウィンドウには、
Webブラウザに表示されていたURLと
titleタグの内容が、
2行書きテキストの状態で出力されています。
この芸当、Internet Explorer + メモ帳ではできません。
これでできると思います。
URLだけでなく、リンクテキスト(この部分)も抽出するように指定する必要があると思いますが。
http://www015.upp.so-net.ne.jp/basue/software/mojika/
こっちはできるかどうかわからない。
エクセルのマクロで自作してみましたが、いかがでしょうか?
'標準モジュールに以下のソースを貼り付けます。
'Sheet1のA列(A1,A2~のセル)にURLを入力します。
'GetHtmlTitleを実行します。
'Sheet1のB列(B1,B2~のセル)にタイトルが表示されます。
Option Explicit
Public Sub GetHtmlTitle()
Sheets("Sheet1").Select
Range("A1").Select
Do Until ActiveCell.Value = ""
Dim url As String
Dim html As String
url = ActiveCell.Value
html = GetHttpResponse("GET", url, "", "_autodetect")
ActiveCell.Offset(0, 1).Value = ExtractTitle(html)
ActiveCell.Offset(1, 0).Activate
Loop
MsgBox "おしまい"
End Sub
Private Function GetHttpResponse(ByVal methodType, ByVal url, ByVal sendData, ByVal charset)
Const adTypeBinary = 1
Const adTypeText = 2
Const agent As String = "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"
Dim dst
Set dst = CreateObject("ADODB.Stream")
With dst
.Open
.Type = adTypeBinary
'HttpRequest
Dim xmlhttp
Set xmlhttp = CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open methodType, url, False
xmlhttp.SetRequestHeader "User-Agent", agent
xmlhttp.send (sendData)
.Write (xmlhttp.responseBody) 'ADODB.Streamオブジェクトへ書き込み
.Position = 0
.Type = adTypeText
.charset = charset
GetHttpResponse = .ReadText 'Textとして読み出す
.Close
End With
Set dst = Nothing
End Function
Private Function ExtractTitle(ByVal html As String)
'正規表現オブジェクト
Dim oRe, oMatch, oMatches
'正規表現オブジェクトの参照をセット(新規作成)
Set oRe = CreateObject("VBScript.RegExp")
'正規表現オブジェクトのオプション設定
With oRe
.Global = True
.IgnoreCase = True
End With
'マッチパターン作成
oRe.Pattern = "title[\s]*>([^<>/]+)<[\s]*/title"
'正規表現実行
Set oMatches = oRe.Execute(html)
'マッチした全てに対して処理する
For Each oMatch In oMatches
Set oMatches = oMatch.SubMatches
If oMatches.Count = 1 Then
ExtractTitle = oMatches.Item(0) 'oMatch.Value
Exit For
Else
ExtractTitle = "おかしい・・・"
Exit For
End If
Next
End Function
※参考
Design For Life VBScriptで文字コード変換
※なお、正規表現については良くわかっていません。すみません。
ありがとうございます!
Sleipnirを使っています。
ブラウザではなくフリーソフトでtitleタグの内容とURLの抽出ができるものを教えてください
引き続き募集します