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