投稿時間: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プロパティ」を 利用するという手もあります。
|