[リストへもどる]
一括表示

投稿時間:2003/04/09(Wed) 01:10
投稿者名:js
Eメール:
URL :
タイトル:
インターネット上の文字列取得
インターネット上のHTML内にある文字列を値として
ソフトに取り込みたいのですが、そのようなことはできますでしょうか?

例えば、ネット上のHPの最初の行に「VB大好き」と表示されていた場合に
テキストボックスや変数にその文字列を取得したいということです。

なにか方法があれば教えてください。よろしくお願いします。

投稿時間:2003/04/09(Wed) 07:18
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: インターネット上の文字列取得
> 例えば、ネット上のHPの最初の行に「VB大好き」と表示されていた場合に
> テキストボックスや変数にその文字列を取得したいということです。

このHPの左側のメニューの「逆引きヘルプ一覧」は見ましたか?
「インターネットに接続して画像ファイル等をダウンロードする」を見て下さい。
これで取得したhtmlファイルを加工すれば良いのでは?

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

投稿時間:2003/04/09(Wed) 15:58
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: インターネット上の文字列取得
こちらの方法が簡単かも WebBrowser1 とTextBox とCommand ボタンを配列で2個用意
しておいて下さい。

Option Explicit    
Private Sub Form_Load()
    '別途プロジェクト→コンポーネントで Microsoft Internet Control に
    'チェックを入れてWebBrowserコントロールをフォームに貼り付けて下さい。
    'HTMLファイルを表示
    WebBrowser1.Navigate "http://www.yahoo.co.jp/"      
End Sub

Private Sub Command1_Click(Index As Integer)
    With WebBrowser1.Document
        If Index = 0 Then
            'テキスト形式で取得
            Text1.Text = .body.innerText
        Else
      'HTML形式で取得
            Text1.Text = .body.innerHTML
        End If
    End With
End Sub

投稿時間:2003/04/11(Fri) 23:57
投稿者名:js
Eメール:
URL :
タイトル:
ありがとうございました
ありがとうございました。
よくわかりました。

要するにそのファイルをダウンロードしてからでないと
値をとることはできないみたいですね。