2017-11-05 1 views
0

Ich versuche, einige Informationen von einer Website zu bekommen, aber ich bekomme den Status 404, obwohl die URL in jedem Browserfenster korrekt geöffnet wird. Dies ist der Code Ich verwende:404 Status auf XMLHTTP mit VBA, aber die URL öffnet im Browser

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 

Was könnte das Problem sein? Ich habe es mit und ohne https versucht. Ich habe auch versucht, den "#" Character auf "% 23" zu kodieren.

Danke!

+0

Hatten Sie überprüft, ob es von CORS blockiert ist? – DvTr

Antwort

0

Können Sie es ohne "#price%5Bfrom%5D=0&price%5Bto%5D=9999999&p=1&limit=30" versuchen? - Nur "http://sklep.trefl.com/en/puzzle.html" und Sie erhalten den richtigen Statuscode.

 
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

Auf jeden Fall können Sie den Inhalt für diese URL (http://sklep.trefl.com/en/puzzle.html#price%5Bfrom%5D=0&price%5Bto%5D=9999999&p=1&limit=30) erhalten. Überprüfen Sie dies:

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

Ja, es funktioniert, aber ich kann nur die erste Seite bekommen, die Parameter p und Limit erlauben mir, die anderen Seiten zu bekommen. Wie könnte ich die nächsten Seiten bekommen? – user3254924

+0

Sie versuchen diese URLs: 'http://sklep.trefl.com/de/Filter/advanced/result/?dir=asc&id=38&limit=30&order=position&p=1&price%5Bfrom%5D=0&price%5Bto%5D=9999999 ',' http: //sklep.trefl.com/en/Filter/advanced/result/? dir = asc & id = 38 & Limit = 30 & Auftrag = Position & p = 2 & Preis% 5Bvon% 5D = 0 & Preis% 5Bbis% 5D = 9999999' und so weiter. Außerdem erhalten Sie für diese URLs (ohne #) die korrekten Statuscodes. –

+0

Die Parameter wurden mit # require browser verarbeitet. Sie können URLs wie folgt verwenden: http://sklep.trefl.com/de/Filter/advanced/result/?price[from]=0&price[to]=9999999&p=2&limit=30 –

Verwandte Themen