【发布时间】:2018-06-17 12:00:24
【问题描述】:
我正在尝试在维基百科页面中获取以关键字 War 或 LPGA 开头的字符串。我没有直接使用这两个关键字;相反,我通过keyword 变量使用它们,因为qsp 中可能包含更多项目。
但是,当我使用 Like 运算符运行脚本时,我什么也得不到。也没有错误。当我使用If InStr(post.innerText, keyword) > 0 Then 这个代码块运行相同的结果时,我得到了结果。问题是当我使用InStr() 函数运行我的脚本时,它会获取那些包含keyword 我用作变量的字符串,而不是以keyword 开头的字符串。
那么,如何在下面的脚本中使用Like 运算符来实现相同的效果。
这是我目前的尝试:
Sub FetchInfo()
Const URL As String = "https://en.wikipedia.org/wiki/Portal:Current_events"
Dim Http As New XMLHTTP60, Html As New HTMLDocument
Dim post As Object, qsp As Variant, keyword As Variant, R&
qsp = [{"War in Donbass","LPGA Tour"}]
For Each keyword In qsp
keyword = Split(keyword, " ")(0)
With Http
.Open "GET", URL, False
.send
Html.body.innerHTML = .responseText
End With
For Each post In Html.getElementsByTagName("a")
If post.innerText Like "*keyword" Then
R = R + 1: Cells(R, 1) = post.innerText
End If
Next post
Next keyword
End Sub
当我使用 InStr() 函数时,该部分看起来像:
If InStr(post.innerText, keyword) > 0 Then
R = R + 1: Cells(R, 1) = post.innerText
End If
更清楚一点:如果我想搜索War,那么我想得到类似的结果(以下结果是假设的,它们可能不存在于该站点中):
war house
war of the worlds
不喜欢:
city of war
causes of the war
【问题讨论】:
-
所以您想要字符串开头与搜索词匹配的结果?目前,如果您尝试匹配
"*keyword",您的代码显然无法正常工作 -
是的,就是这样。
-
或许可以试试:
If post.innerText Like keyword & "*" Then -
没办法!!!!!!你做到了。你让我很开心@ashleedawg。请将其作为答案包含在内,以便我接受。
-
顺便说一下,关于为什么它应该是
"*"而不是"* "或" *"的一些信息会很有帮助。
标签: string vba excel web-scraping