人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://www.stat.go.jp/info/link/index.htm

例えば上記のような指定したURLから
リンク先URLと表示文字を下記の例のように
テキストまたはエクセルファイルに
抽出してくれるフリーソフトを探しています

テキストの体裁は
それほどこだわりません

(例)
電子政府の総合窓口
http://www.e-gov.go.jp/

総務省統計研修所
http://www.stat.go.jp/training/index.htm

独立行政法人統計センター
http://www.nstac.go.jp/


●質問者: artdot
●カテゴリ:インターネット ウェブ制作
✍キーワード:URL エクセル テキスト ファイル フリーソフト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hottokei
●27ポイント

ものすごく特定の環境下、かつ手動、連続操作不可ですが、WebブラウザFirefox + メールソフトThunderbirdの組み合わせ(ともにフリーソフト)を使うと、こんなことができます。

http://www.mozilla-japan.org/


1 メールソフトの準備

メールソフトThunderbirdで「新しいメッセージを作成」として、新規メッセージウィンドウをあらかじめ開いておく。


2 WebブラウザFirefoxで、任意のウェブサイトを表示させる。


3 その状態で、FirefoxのURLが表示されているテキストボックスに注目。

表示中サイトのURLの文字列の頭にある部分にマウスを当てると

「このアイコンをドラッグ&ドロップすると、このページのリンクが作成されます。」と、

表示されますが、その状態で、マウスをドラッグして、

Thunderbirdのメッセージウィンドウにドロップして下さい。


4 ドロップした先のメッセージウィンドウには、

Webブラウザに表示されていたURLと

titleタグの内容が、

2行書きテキストの状態で出力されています。


この芸当、Internet Explorer + メモ帳ではできません。

◎質問者からの返答

Sleipnirを使っています。

ブラウザではなくフリーソフトでtitleタグの内容とURLの抽出ができるものを教えてください

引き続き募集します


2 ● hamster009
●27ポイント

これでできると思います。

URLだけでなく、リンクテキスト(この部分)も抽出するように指定する必要があると思いますが。

http://www015.upp.so-net.ne.jp/basue/software/mojika/

こっちはできるかどうかわからない。

http://vvindows.s17.xrea.com/x/vvine.html


3 ● llusall
●31ポイント

エクセルのマクロで自作してみましたが、いかがでしょうか?

   '標準モジュールに以下のソースを貼り付けます。

   '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で文字コード変換

一文字に三つ星 [VBA] 正規表現オブジェクトの使い方

※なお、正規表現については良くわかっていません。すみません。

◎質問者からの返答

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ