我在搜索HTML代码时难以使用InStr()进行多行输入 - 这是我的代码的简化版本,其中的注释显示在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,什么也没找到。但如果我通过将字符串分解为单行并重复来做同样的事情 - 它可以正常工作。
在搜索HTML并获得回报时,有什么方法可以将多行文本传递给InStr()?感谢
答案 0 :(得分:2)
您可能需要使用this
或vbCr
代替vbLf
来匹配vbCrLf
。您可以使用\n
来确定html源中换行符的用途。
希望有所帮助