我对VBA非常陌生,并且堆栈溢出。我正在开发一个vba,该vba会使用来自中国搜索引擎Baidu.com的前5个URL链接。但是,经过一天的研究,我仍然无法解决一些错误。请提供帮助。
Sub GettingURL()
Application.ScreenUpdating = False
With CreateObject("InternetExplorer.Application")
.Visible = True
.navigate "https://baidu.com/s?wd=" & Sheets("Data").Cells(1, 2).Text
While .Busy Or .readyState < 4: DoEvents: Wend
With .document.all.ires.getElementsByTagName("A")
c = 3
For u = 0 To Application.Min(8, .Length - 1) Step 2
Sheets("Data").Cells(c, 1) = .Item(u).href
c = c + 1
Next
End With
.Quit
End With
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:2)
tl; dr;
所以,这一直困扰着我,直到............我想如果HTML中的链接最终在指向页面的方向上出现不同的显示怎么办。
因此,尽管从技术上讲不是前5个(因为元素5的页面样式不一致;缺少h3标签),但是当您查看生成的最终URL时,这似乎与注释中给定的列表匹配
CSS选择器组合:
我使用CSS选择器组合来定位#content_left h3 [href]
的页面。这会在ID为href
的元素内的父h3
元素内寻找具有content_left
属性的元素。
这是搜索词red
与CSS查询匹配的内容。 (提供了示例)
VBA:
您可以通过querySelectorAll
的{{1}}方法来应用CSS选择器组合,因为您期望有多个匹配的元素,这将返回一个静态的document
。循环返回的nodeList
中的.Length
,以按索引访问项目。
nodeList
结果:
比较检索到的URL及其最终显示的内容,如果在导航栏中输入它们,则会得到以下信息: