Top > 気まぐれ日記 > 2003-03-07

ASP

ASPが出力するHTMLを取得する方法がわからず、URLから取得する方法を検討中です。

  • IEコンポーネント
    • かな〜り重いです。しかもHTMLの中身が加工されているような...
  • BASP21のソケット通信
    • 本命だと思っているのですが、BASP21をインストールするとセキュリティの確保が面倒なので...
  • その他
    • Microsoft.XMLHTTPで強引にとってこれるみたいです。(厳密にはXMLになるのかな)
    • 自動でUnicodeに変換されるので、FSOでUnicodeファイルに保存すると簡単に変換できるみたい。
    • 関数にするとこんな感じです。エラー処理は手抜き<ぉぃ
' URLからHTMLテキストを取得
Function GetHtml(ByVal strURL)
    Dim objXmlHttp, objFSO, objTextFile
    Dim strHtml, strTmpFileName

    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    Set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
    strTmpFileName = objFSO.GetSpecialFolder(2) & "\" & objFSO.GetTempName
    '' HTML取得(XMLとして)
    strHtml = ""
    On Error Resume Next
        objXmlHttp.Open "GET", strURL, False
        objXmlHttp.Send
        If Err.Number = 0 Then strHtml = objXmlHttp.responseBody
    On Error GoTo 0
    If Len(strHtml) > 0 Then
        '' UNICODEとしてファイル格納
        On Error Resume Next
            Set objTextFile = objFSO.CreateTextFile(strTmpFileName, True, True)
            objTextFile.Write strHtml
            objTextFile.Close
        On Error GoTo 0
        '' ShiftJISとしてファイル読込
        On Error Resume Next
            Set objTextFile = objFSO.OpenTextFile(strTmpFileName, 1, False, 0)
            If Err.Number = 0 Then strHtml = Mid(objTextFile.ReadAll(), 3)
            objTextFile.Close
            objFSO.DeleteFile strTmpFileName
        On Error GoTo 0
        Set objTextFile = Nothing
    End If
    Set objFSO = Nothing
    Set objXmlHttp = Nothing
    '' 取得したHTMLをセット
    GetHtml = strHtml
End Function

<code>タグの存在に今日気づきました。フォントを決めうちより良いかも。