使用Visual Basic从Internet Explorer中提取类中的值

有了这段代码,我想从网站检索一个特定标签的值,并将其放在我的电子表格中:

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 

我试图使用CSSpath来select它作为一个节点,但不能。 我也尝试从课堂上select它,但再次没有工作

这是来自网站的代码,我想从中检索57.50的值

 <span class="tyre-price"> Fully Fitted Price <div class="tyre-price-cost tyres-1"> <strong>&pound;57.50</strong> </div><div class="tyre-price-cost tyres-2" style="display:none"> <strong>&pound;115.00</strong> </div><div class="tyre-price-cost tyres-3" style="display:none"> <strong>&pound;172.50</strong> </div><div class="tyre-price-cost tyres-4" style="display:none"> <strong>&pound;230.00</strong> </div><div class="tyre-price-cost tyres-5" style="display:none"> <strong>&pound;287.50</strong> </div> </span> 

根据getElementsByClassName方法直接提取元素,但是循环getElementsByTagName方法返回的集合,并且比较类属性似乎至less也起作用。

 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对象 。