使用InStr()searchHTML时出错

我在使用InStr()进行HTML代码search时遇到了困难 – 下面是我的代码的简化版本,其中的注释在debug.print中显示错误:

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代码:

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

如图所示,当我尝试将多行HTML传入InStr()时,它返回0,什么也找不到。 但是,如果我通过将string拆分为单行并重复 – 也可以正常工作。

有什么办法,我可以传递多行文本到InStr()searchHTML并获得回报? 谢谢

您可能需要使用vbCrvbLf而不是vbCrLf来匹配\n 。 您可以使用Asc(Mid(html_source, position, 1))来确定html源代码中的换行符。

希望有所帮助