VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/04/09(Wed) 10:46
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: インターネット上の文字列取得

> インターネット上のHTML内にある文字列を値として
> ソフトに取り込みたいのですが、そのようなことはできますでしょうか?

やり方はいろいろありますが、「XMLHTTPオブジェクト」を使うというのは如何でしょうか?

これだと、文字コードの変換も自動で行ってくれますので、yahooのような、
「文字コードがEUC-JPであるページ」でも、比較的簡単に取り込めるかと思います。

'--------
Option Explicit

Private Sub Form_Load()
    Text1.Text = "http://www.yahoo.co.jp/"

    'Text2のMultiLineはTrueにしておいて下さい。
    Text2.Text = ""
End Sub

Private Sub Command1_Click()
    Dim xmlHTTP As Object
    
    Set xmlHTTP = getXMLHTTP()
    If xmlHTTP Is Nothing Then
        MsgBox "XMLHTTPオブジェクトの生成に失敗しました。", vbExclamation
        Exit Sub
    End If

    xmlHTTP.Open "GET", Text1.Text, False
    xmlHTTP.send ""

    Text2.Text = xmlHTTP.responseText
    
    Set xmlHTTP = Nothing
End Sub

Private Function getXMLHTTP() As Object
  Dim L As Long
  On Error Resume Next

  'セキュリティレベル & パフォーマンスの高い MSXML4を優先して作成する。
  '対応バージョンのXMLHTTPがインストールされていない場合は、
  '下位バージョンのXMLHTTPオブジェクトの生成を試みる。
  For L = 0 To 4
    Select Case L
     Case 0
      Set getXMLHTTP = CreateObject("Msxml2.XMLHTTP.4.0")
     Case 1
      Set getXMLHTTP = CreateObject("Msxml2.XMLHTTP.3.0")
     Case 2
      Set getXMLHTTP = CreateObject("Msxml2.XMLHTTP.2.6")
     Case 3
      Set getXMLHTTP = CreateObject("Msxml2.XMLHTTP")
     Case 4
      Set getXMLHTTP = CreateObject("Microsoft.XMLHTTP")
    End Select
    If Not getXMLHTTP Is Nothing Then
        Exit For
    End If
  Next
End Function
'---------

上記のようにHTML自体を取得するのではなく、テキストノードだけを取得したいのであれば、
XMLHTTP.responseTextの代わりに、MSHTMLの「innerText/outerTextプロパティ」を
利用するという手もあります。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -