MSXML2.ServerXMLHTTP応答が完全なhtmlソースを返さないのはなぜですか?

ヨベルの年

MSXML2.ServerXMLHTTPオブジェクトのresponseプロパティが完全なhtmlソースを返さないのはなぜか疑問に思います。「内部html」のみを返しているようです。IEオブジェクトを作成して「外部HTML」を取得することはできますが、何百もの検索項目があるため、あまり効率的ではありません。

以下に示す関数(URLを使用)があり、HTMLコンテンツを文字列に割り当てます。

Sub test()
    Dim myString As String
    myString = getECICS2("103-90-2") ' myString only contains inner html
End Sub

Public Function getECICS(ByVal casNum As String) As String
  Dim XMLhttp: Set XMLhttp = CreateObject("MSXML2.ServerXMLHTTP")
  XMLhttp.setTimeouts 2000, 2000, 2000, 2000
  XMLhttp.Open "GET", "http://ec.europa.eu/taxation_customs/dds2/ecics/chemicalsubstance_consultation.jsp?Lang=en&Cas=" & casNum & "&Cus=&CnCode=&EcCode=&UnCode=&Name=&LangNm=en&Inchi=&Characteristic=&sortOrder=1&Expand=true&offset=0&range=25", False
  XMLhttp.send
  If XMLhttp.Status = 200 Then
    getECICS = XMLhttp.responseText
  Else
    getECICS = ""
  End If
End Function

前もって感謝します

user3357963

ティムは頭に釘を打ちました。HTMLがダウンロードされると、Webページはjavascriptを使用してページを更新します。これはブラウザで自動的に行われます。

以下のコードを実行すると、Chrome / IE / FFなどで表示できるhtmlファイルに応答がダンプされます。

Sub test()
    Dim myString As String
    myString = getECICS("103-90-2") ' myString only contains inner html
End Sub

Public Function getECICS(ByVal casNum As String) As String
  Dim XMLhttp: Set XMLhttp = CreateObject("MSXML2.ServerXMLHTTP")
  XMLhttp.setTimeouts 2000, 2000, 2000, 2000
  XMLhttp.Open "GET", "http://ec.europa.eu/taxation_customs/dds2/ecics/chemicalsubstance_consultation.jsp?Lang=en&Cas=" & casNum & "&Cus=&CnCode=&EcCode=&UnCode=&Name=&LangNm=en&Inchi=&Characteristic=&sortOrder=1&Expand=true&offset=0&range=25", False
  XMLhttp.send
  If XMLhttp.Status = 200 Then
    getECICS = XMLhttp.responseText
  Else
    getECICS = ""
  End If
  outputtext (getECICS)
End Function

Function outputtext(text As String)
Dim MyFile As String, fnum As String
        MyFile = ThisWorkbook.Path & "\" & "test.html"
        'set and open file for output
        fnum = FreeFile()
        Open MyFile For Output As fnum
        'use Print when you want the string without quotation marks
        Print #fnum, text
        Close #fnum
End Function

残念ながら、最も簡単な解決策は、ブラウザまたはスクリプト対応のソリューションで自動化を実行して、必要なデータを取得することです。

最近の多くのサイトでは、javascript / AJAX / Loginセッションを使用して速度とリソースへのアクセスを制御しているため、ブラウザーを使用しないことで常に希望の速度を上げることができるとは限りません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

MSXML2.ServerXMLHTTP応答が完全なhtmlソースを返さないのはなぜですか?

分類Dev

httpリクエストの応答がAngular2で表示されないのはなぜですか?

分類Dev

2 == 4がfalseを返さないのはなぜですか?

分類Dev

MSXML2.ServerXMLHTTP clientcertificate

分類Dev

ASP.NET Core 2メソッドがTwiMLを返さないのはなぜですか?

分類Dev

承認コードをアクセストークンと交換するときに、無効なトークン応答が返されるのはなぜですか?(スプリングブート、oauth2、紺碧)

分類Dev

コードが無応答エラーを返すのはなぜですか?私はsymfony2を初めて使用し、symfonyブックで説明されているブログの例を実装しようとしています。

分類Dev

完全なArraylistが2番目のforループで出力されないのはなぜですか?

分類Dev

pow(sqrt(-1)、2)が-1を返さないのはなぜですか?

分類Dev

「client_credentials」付与に応答するOAuth2サーバーによってrefresh_tokenが提供されないのはなぜですか?

分類Dev

HTTP応答がヘッダーと本文の2つの部分に分割されるのはなぜですか?

分類Dev

google oauth2 playgroundがデータを返さないのはなぜですか?

分類Dev

ケース2:Java 7で、同じ値に対して2つの異なる答えが返されるのはなぜですか?

分類Dev

vimがhtmlの2つのスペースをインデントしないのはなぜですか?

分類Dev

PHP WSDL(Zf2)で成功が返されないのはなぜですか

分類Dev

2番目の関数が何も返さないのはなぜですか?

分類Dev

新しいjsFetch標準で応答ヘッダー名が「SetCookie1 / 2」として禁止されているのはなぜですか?

分類Dev

スワップケースを2回使用しても、同じ答えが返されないのはいつですか?

分類Dev

Console2が奇妙なオフセットでカーソルを返すのはなぜですか?

分類Dev

XSLT:<for-each>が2回繰り返されないのはなぜですか

分類Dev

testthatのヘルパーファイルが2回ソースされているのはなぜですか

分類Dev

mac os sdl2プログラムウィンドウが応答しないのはなぜですか?

分類Dev

wso2が応答でrefresh_tokenを返さない

分類Dev

これらの2つのシナリオが同じ出力を返さないのはなぜですか?

分類Dev

ループが 2 回しか繰り返されないのはなぜですか?

分類Dev

html2canvasが定義されていないのはなぜですか?

分類Dev

2秒後にコンソールから情報が出力されないのはなぜですか--- Rxjava

分類Dev

Linuxで繰り返し開始ベースのi2c操作がサポートされていないのはなぜですか?

分類Dev

Express js、サーバーから2つの応答があるのはなぜですか?

Related 関連記事

  1. 1

    MSXML2.ServerXMLHTTP応答が完全なhtmlソースを返さないのはなぜですか?

  2. 2

    httpリクエストの応答がAngular2で表示されないのはなぜですか?

  3. 3

    2 == 4がfalseを返さないのはなぜですか?

  4. 4

    MSXML2.ServerXMLHTTP clientcertificate

  5. 5

    ASP.NET Core 2メソッドがTwiMLを返さないのはなぜですか?

  6. 6

    承認コードをアクセストークンと交換するときに、無効なトークン応答が返されるのはなぜですか?(スプリングブート、oauth2、紺碧)

  7. 7

    コードが無応答エラーを返すのはなぜですか?私はsymfony2を初めて使用し、symfonyブックで説明されているブログの例を実装しようとしています。

  8. 8

    完全なArraylistが2番目のforループで出力されないのはなぜですか?

  9. 9

    pow(sqrt(-1)、2)が-1を返さないのはなぜですか?

  10. 10

    「client_credentials」付与に応答するOAuth2サーバーによってrefresh_tokenが提供されないのはなぜですか?

  11. 11

    HTTP応答がヘッダーと本文の2つの部分に分割されるのはなぜですか?

  12. 12

    google oauth2 playgroundがデータを返さないのはなぜですか?

  13. 13

    ケース2:Java 7で、同じ値に対して2つの異なる答えが返されるのはなぜですか?

  14. 14

    vimがhtmlの2つのスペースをインデントしないのはなぜですか?

  15. 15

    PHP WSDL(Zf2)で成功が返されないのはなぜですか

  16. 16

    2番目の関数が何も返さないのはなぜですか?

  17. 17

    新しいjsFetch標準で応答ヘッダー名が「SetCookie1 / 2」として禁止されているのはなぜですか?

  18. 18

    スワップケースを2回使用しても、同じ答えが返されないのはいつですか?

  19. 19

    Console2が奇妙なオフセットでカーソルを返すのはなぜですか?

  20. 20

    XSLT:<for-each>が2回繰り返されないのはなぜですか

  21. 21

    testthatのヘルパーファイルが2回ソースされているのはなぜですか

  22. 22

    mac os sdl2プログラムウィンドウが応答しないのはなぜですか?

  23. 23

    wso2が応答でrefresh_tokenを返さない

  24. 24

    これらの2つのシナリオが同じ出力を返さないのはなぜですか?

  25. 25

    ループが 2 回しか繰り返されないのはなぜですか?

  26. 26

    html2canvasが定義されていないのはなぜですか?

  27. 27

    2秒後にコンソールから情報が出力されないのはなぜですか--- Rxjava

  28. 28

    Linuxで繰り返し開始ベースのi2c操作がサポートされていないのはなぜですか?

  29. 29

    Express js、サーバーから2つの応答があるのはなぜですか?

ホットタグ

アーカイブ