使用此代码,我想从网站检索特定标记的值并将其放在我的电子表格中:
Sub get_tit()
Dim wb As Object
Dim doc As Object
Dim sURL As String
Dim lastrow As Long
lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
Set wb = CreateObject("internetExplorer.Application")
wb.navigate "https://www.tyre-shopper.co.uk/search/205-55-16/V/91"
Do While wb.Busy
Loop
Set doc = wb.document
Price = SelectNodes("#more-tyres > li:nth-child(4) > div > div.result-buy > form > span.tyre-price > div.tyre-price-cost.tyres-1 > strong")
Range("A5").Value = Price
End Sub
我尝试使用CSS路径将其选为节点但不能。 我也尝试从课堂上选择它,但它再次无效
这是网站上的代码,我想从中检索值57.50
<span class="tyre-price">
Fully Fitted Price
<div class="tyre-price-cost tyres-1">
<strong>£57.50</strong>
</div><div class="tyre-price-cost tyres-2" style="display:none">
<strong>£115.00</strong>
</div><div class="tyre-price-cost tyres-3" style="display:none">
<strong>£172.50</strong>
</div><div class="tyre-price-cost tyres-4" style="display:none">
<strong>£230.00</strong>
</div><div class="tyre-price-cost tyres-5" style="display:none">
<strong>£287.50</strong>
</div>
</span>
答案 0 :(得分:1)
我根据getElementsByClassName method直接提取元素但是在getElementsByTagName method返回的集合中循环并且比较类属性似乎也起到了最小的作用,我从未取得太大成功。
Sub get_tit()
Dim wb As Object
Dim doc As Object
Dim sURL As String
Dim lastrow As Long
Dim iDIV As Long, sPrice As Variant, sib As Long
Dim eSIB As IHTMLElement
lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
Set wb = CreateObject("internetExplorer.Application")
wb.Visible = True
wb.navigate "https://www.tyre-shopper.co.uk/search/205-55-16/V/91"
Do While wb.Busy And wb.readyState <> 4
DoEvents
Loop
Set doc = wb.document
With doc.body
sPrice = Array(0, 0, 0, 0)
For iDIV = 0 To .getElementsByTagName("div").Length - 1
With .getElementsByTagName("div")(iDIV)
Select Case .className
Case "tyre-price-cost tyres-1"
sPrice(0) = .innerText
Case "tyre-price-cost tyres-2"
sPrice(1) = .innerText
Case "tyre-price-cost tyres-3"
sPrice(2) = .innerText
Case "tyre-price-cost tyres-4"
sPrice(3) = .innerText
With Sheet1
.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = sPrice(0)
.Cells(Rows.Count, "A").End(xlUp).Offset(0, 1) = sPrice(1)
.Cells(Rows.Count, "A").End(xlUp).Offset(0, 2) = sPrice(2)
.Cells(Rows.Count, "A").End(xlUp).Offset(0, 3) = sPrice(3)
End With
sPrice = Array(0, 0, 0, 0)
Case Else
End Select
End With
Next iDIV
End With
End Sub
fwiw,我相信使用基于IXMLHTTPRequest的刮擦比使用InternetExplorer object的擦除更好。