2017-06-28 1 views
0

ich Schwierigkeiten habe, bin mit InStr() für die Eingänge mehrzeilige, wenn sie durch HTML-Code suchen - hier ist eine vereinfachte Version von meinem Code mit Kommentaren Fehler bei debug.print zeigen:Fehler beim InStr() unter Verwendung von HTML suchen

Sub TestInStr() 
Dim XMLPage As New MSXML2.XMLHTTP60 
Dim html 

XMLPage.Open "GET", "https://www.hltv.org/stats/matches/mapstatsid/48623/masterminds-vs-riotous-raccoons", False 
XMLPage.send 
If XMLPage.Status <> 200 Then MsgBox XMLPage.statusText 
html = XMLPage.responseText 

Dim str1, str2, str3, str4 As String 

'Multi Line HTML 
str1 = "<div class=""bold"">Breakdown</div>" & vbCrLf & "     </div>" & vbCrLf & "     <div class=""match-info-row"">" & vbCrLf & "      <div class=""right"">" 
str2 = "</div>" & vbCrLf & "      <div class=""bold"">Team rating</div>" 
Debug.Print InStr(html, str1) 'Cant find, value = 0 (Multi Line HTML) 
Debug.Print InStr(html, str2) 'Cant find, value = 0 (Multi Line HTML) 


'Single Line HTML 
str3 = "<div class=""bold"">Breakdown</div>" 
str4 = "<div class=""match-info-row"">" 
Debug.Print InStr(html, str3) 'Found, value = 15503 (Single Line HTML) 
Debug.Print InStr(html, str4) 'Found, value = 15208 (Single Line HTML) 
End Sub 

Hier ist der HTML-Quellcode:

  <div class="bold">Breakdown</div> 
      </div> 
      <div class="match-info-row"> 
       <div class="right">0.91 : 1.27</div> 
       <div class="bold">Team rating</div> 

Wie gezeigt, wenn ich versuche, mehrere Zeilen HTML-Code in InStr() übergeben, es zurück a 0, nichts zu finden. Aber wenn ich dasselbe mache, indem ich die Saite in einzelne Zeilen zerlege und wiederhole - es funktioniert gut.

Gibt es eine Möglichkeit, wie ich mehrere Zeilen Text in InStr() übergeben kann, wenn Sie HTML durchsuchen und eine Rückgabe erhalten? Danke

+2

Haben Sie die richtige Anzahl von Leerzeichen in Ihrer Zeichenfolge wie im HTML? Enthält das HTML sogar Leerzeichen? (Es könnte in jeder Anwendung, die Sie zum Anzeigen verwenden, einfach so aussehen.) Enthält der HTML-Code CR/LF-Zeichen oder nur LF- oder nur CR-Zeichen? (Oder, wieder, vielleicht hat es auch keinen und es ist nur der Betrachter, der es zeigt, als wären sie da.) – YowE3K

+3

Sie müssen 'vbCr' oder' vbLf' anstelle von 'vbCrLf' verwenden, um' \ n' zu finden . Sie können 'Asc (Mid (html_source, position, 1))' 'verwenden, um einen Wagenrücklauf von einem Zeilenvorschub in der Quelle zu unterscheiden. – xidgel

+2

Vielen Dank - Ihr seid großartig !! vbLf hat es behoben. Wenn Sie dies bitte als Antwort posten könnten - werde ich es als vollständig für andere Referenz markieren. Danke noch einmal! –

Antwort

2

Möglicherweise müssen Sie vbCr oder vbLf anstelle von vbCrLf verwenden, um \n zu entsprechen. Sie können Asc(Mid(html_source, position, 1)) verwenden, um zu bestimmen, was für einen Zeilenumbruch in der HTML-Quelle verwendet wird.

Hoffe, dass hilft

Verwandte Themen