2017-06-28 6 views
0

を検索するために、InStr()を使用している場合、HTMLコードを検索するとき、私は複数のライン入力のために、InStr()を使用して困難を抱えている - ここでのDebug.Printでのエラーを示すコメントが私のコードの簡易版です:エラーHTML

ここで
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 

は、ソースHTMLコードです:私は(InStr関数の中にHTMLの複数行を渡すしようとすると、示されているように)

  <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> 

、それは返す何も見つけない、0です。しかし、もし私が文字列を1行に分割して繰り返して繰り返すと、うまくいきます。

HTMLを検索してリターンを得るときに、複数の行のテキストをInStr()に渡す方法はありますか?ありがとう

+2

HTMLのように文字列に正しい数のスペースがありますか? HTMLには空白も含まれていますか? HTMLはCR/LF文字か、LFかCR文字のみを含んでいますか? (または、もう一度、多分それはどちらも持っていないかもしれませんし、ちょうどそこにいるかのようにそれを見せているビューアです) – YowE3K

+3

'\ n'にマッチさせるために' vbCrLf'の代わりに 'vbCr'または' vbLf'を使う必要があるかもしれません。 'Asc(Mid(html_source、position、1))'を使って、ソース内の改行と改行を区別することができます。 – xidgel

+2

ありがとうございます - 皆さんは素晴らしいです! vbLfはそれを修正しました。もしあなたが答えとして投稿してください - 私は他の人の参照のために完全にマークします。再度、感謝します! –

答えて

2

\nに一致するのにvbCrLfの代わりにvbCrまたはvbLfを使用する必要があります。 Asc(Mid(html_source, position, 1))を使用して、htmlソース内の改行に使用されるものを特定することができます。

希望するもの