2017-11-05 22 views
0

ウェブサイトから情報を取得しようとしていますが、ブラウザウィンドウでURLが正しく開かれていても状態404になります。 これは私が使用しているコードです:VBAを使用しているXMLHTTPのステータスが、ブラウザでURLが開かれています

Sub GetURL() 

Dim xhr As MSXML2.XMLHTTP60 
Dim doc As MSHTML.HTMLDocument 

Set xhr = New MSXML2.XMLHTTP60 

Url = "http://sklep.trefl.com/en/puzzle.html#price%5Bfrom%5D=0&price%5Bto%5D=9999999&p=1&limit=30" 

With xhr 
    .Open "GET", Url, False 
    .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 
    .send 
    If .readyState = 4 And .Status = 200 Then 
     Set doc = New MSHTML.HTMLDocument 
     wtext = .responseText 
    Else 
     Debug.Print "error" 
    End If 
End With 

End Sub 

何が問題なのですか? 私はhttpsの有無にかかわらず試しました。 また、 "#"チャプターを "%23"にエンコードしようとしました。

ありがとうございます!

+0

CORSによってブロックされているかどうかチェックしましたか? – DvTr

答えて

0

"#price%5Bfrom%5D=0&price%5Bto%5D=9999999&p=1&limit=30"を付けずに試してみることはできますか? - ちょうど "http://sklep.trefl.com/en/puzzle.html"と、正しいステータスコードが表示されます。

 
Sub GetURL() 

Dim xhr As MSXML2.XMLHTTP60 
Dim doc As MSHTML.HTMLDocument 
Dim Url As String 

Set xhr = New MSXML2.XMLHTTP60 

Url = "http://sklep.trefl.com/en/puzzle.html" 

With xhr 
    .Open "GET", Url, False 
    .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 
    .send 
    If .readyState = 4 And .Status = 200 Then 
     Set doc = New MSHTML.HTMLDocument 
     wtext = .responseText 
    Else 
     Debug.Print "error" 
    End If 
End With 

End Sub

とにかくあなたはこのURL(http://sklep.trefl.com/en/puzzle.html#price%5Bfrom%5D=0&price%5Bto%5D=9999999&p=1&limit=30)のコンテンツを取得することができます。これを確認してください:

 
... 
    Else 
     Debug.Print .responseText 
    End If 
... 
+0

はい、動作しますが、最初のページしか取得できません。パラメータpとlimitを使用すると、他のページを取得できます。どうすれば次のページを手に入れることができますか? – user3254924

+0

次のURLを試してみてください: 'http://sklep.trefl.com/en/Filter/advanced/result/?dir=asc&id=38&limit=30&order=position&p=1&price%5Bfrom%5D=0&price%5Bto%5D=9999999 $ 5&%5D = 0&price%5Bto%5D = 9999999'などのようになります。これに加えて、これらのURL(#を除く)に対して、正しいステータスコードが得られます。 –

+0

#で処理されたパラメータは、処理するためにブラウザが必要です。次のようにURLを使用できます:http://sklep.trefl.com/en/Filter/advanced/result/?price[from]=0&price[to]=9999999&p=2&limit=30 –

関連する問題