【发布时间】:2018-01-05 00:05:26
【问题描述】:
这是我试图仅返回价格值的链接:https://www.express-supp...
我有一个 VBA 脚本,它将所有 product-grid-details 表值返回到工作簿中,但有些值进入了错误的列,不允许生成数据透视表。但是,如果我更改此代码以生成名为 price-box 的表,它根本不会返回任何值。
我认为页面上的 HTML 表格是乱序的,并且彼此之间没有排序,这就是它使数据超出列的原因。作为一种解决方案,我希望 VBA 只返回页面的项目名称和价格,而不是全部。我该怎么做?
选择返回 product-grid-details 时如何将表格返回到工作簿的示例:
代码如下:
With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET", "https://www.express-supplements.co.uk/catalogsearch/result?q=Optimum+Nutrition", False
.send
oHtml.body.innerHTML = .responseText
Debug.Print
End With
ReDim a(1 To 100000, 1 To 60)
For Each oElement In oHtml.getElementsByClassName("product-grid-details")
i = i + 1
x = Split(oElement.innerText, vbCr)
For ii = 1 To UBound(x)
a(i, 1) = nowDate
a(i, 2) = nowTime
a(i, 3) = weblinks(webX, 1)
a(i, 4) = weblinks(webX, 2)
a(i, ii + 4) = Trim$(x(ii))
Next
Next oElement
With SHwebdata
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
.Cells(LastRow + 1, 1).Resize(i, UBound(a, 2)) = a
i = 0
End With
【问题讨论】:
标签: vba excel web-scraping html-table