我正在尝试抓取共享相同类名的 li 标签 HTML 代码如下所示:
<ul class="top-section-list" data-selenium="highlightList">
<li class="top-section-list-item">sample text# 1</li>
<li class="top-section-list-item">sample text# 2</li>
<li class="top-section-list-item">sample text# 3</li>
<li class="top-section-list-item">sample text# 4</li>
<li class="top-section-list-item">sample text# 5</li>
</ul>
这是我的 VBA 代码,它只能抓取第一个列出的项目,而不能抓取其余的项目。
Sub GetData()
Dim objIE As InternetExplorer
Dim itemEle As Object
Dim data As String
Dim y As Integer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate "https://www.bhphotovideo.com/c/product/1312545-REG/fujifilm_16550643_instax_mini_9_instant.html"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
For Each itemEle In objIE.document.getElementsByClassName("top-section-list")
data = itemEle.getElementsByTagName("li")(0).innerText
Next
Range("A1").Value = data
End Sub
它只写入单元格 A1:“sample text# 1” 我怎样才能将所有标签写入单元格A1? 期望的结果是单元格 A1: 示例文本#1 示例文本#2 示例文本# 3 示例文本# 4 示例文本#5
谢谢!
最佳答案
使用.querySelectorAll
并循环返回的nodeList
要使用的 CSS 选择器是
ul.top-section-list li
VBA 代码:
Option Explicit
Public Sub GetData()
Dim objIE As InternetExplorer, nodeList As Object, currentItem As Long, outputString As String
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate "https://www.bhphotovideo.com/c/product/1312545-REG/fujifilm_16550643_instax_mini_9_instant.html"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Set nodeList = objIE.document.querySelectorAll("ul.top-section-list li")
With ActiveSheet '<== use actual sheet name
For currentItem = 0 To nodeList.Length - 1
outputString = outputString & Chr$(32) & nodeList.item(currentItem).innerText
Next currentItem
.Cells(1, 1) = Trim$(outputString)
End With
'ObjIE.Quit
End Sub
CSS 查询:
关于html - Excel VBA抓取具有相同类名的li标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621049/