1

Excel VBAを使用して、特定のWebサイトのページソースを次の方法でダウンロードします。

    Public Function GetPage(URL As String) As String
        Dim oX As New MSXML2.XMLHTTP
        oX.Open "Get", URL, False
        oX.Send
        GetPage = oX.responseText
    End Function

ただし、注意深く調べたところ、このコードが返すHTMLソースは、Webブラウザーでサイトにアクセスしたときに返されるHTMLソースとは異なることがわかりました。

これは私が訪問しているウェブサイトです。ページの下部に、2つの結果が一覧表示されます。ここで、GetPage関数を使用してそのURLにアクセスすると、メインページのHTMLが返されますが、結果は含まれていません。ソースには、具体的に「0件の結果が見つかりました」と記載されています。何が得られますか?特定のHTML要素を置き換えるためにJavaScriptを使用しているようには見えないので、私は途方に暮れています。自分でサイトにアクセスすると速度が遅くなることに気付きましたが、VBAHTTPリクエストを実行するとほぼ瞬時に表示されます。たぶん私は何かを待たなければなりませんか?

VBAを介してHTTPリクエストを実行すると、これらの結果が見つからない理由を誰かが知っていますか?

4

1 に答える 1

4

#resultsURL の末尾からフラグメント識別子を削除してみてください。これは URL の完全に正当な構文ですが、応答でこれを見ると、ここで問題が発生するようです。

 ERROR:  column "results" does not exist
LINE 1: ... = 'O') AND (parent_part_info IS NULL))) LIMIT 10#results OF...

部分なしで URL を実行すると#results、数秒後に応答が返され、ブラウザーで URL にアクセスしたときに同じ 2 つの結果が表示されます。

MSXML2.XMLHTTP-の同義語でもありMSXML2.XMLHTTP30ます。つまり、"Microsoft XML, v3.0" ライブラリの元のバージョンです。「Microsoft XML、v6.0」ライブラリを使用している場合は、通常、参照を に変更することをお勧めしますMSXML2.XMLHTTP60このマイクロソフトのブログ投稿を参照してください

于 2012-12-03T23:52:58.487 に答える