从Excel VBA中的网页中获取表格的确切HTML格式

时间:2014-09-22 21:02:02

标签: vba excel-vba web-scraping excel

我正试图抓住一张桌子,并且已经获得了桌面的所有HTML,但之后却被卡住了。

Sub clickFormButton()
Dim oHtml       As HTMLDocument
Dim oElement    As IHTMLElement

Set oHtml = New HTMLDocument


With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET", "http://www.marketwatch.com/tools/quotes/lookup.asp?siteID=mktw&Lookup=agnico-eagle+mines&Country=us&Type=All", False
.send
oHtml.body.innerHTML = .responseText

End With


Dim wsTarget As Worksheet
Dim i As Integer
i = 1
Set wsTarget = ActiveWorkbook.Worksheets("Sheet1")

For Each oElement In oHtml.getElementsByClassName("results")
wsTarget.Range("A" & i) = oElement.Children(0).innerText
i = i + 1
Next

End Sub`

这将返回我想要的数据,但是它会在一个单元格中返回所有数据。我希望通过遵循TR和TD标记将刮下的数据格式化为类似的HTML格式表。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我会使用split函数执行此任务。

代码段

split(oElement.Children(0).innerText, "<\TR>")

将返回一个字符串数组,其中每个元素都是HTML表格中的一行。从那里,您可以使用"<\TD>"替换"<\TR>"来运行类似的命令,将每行拆分为单个单元格。从那里你可能想要清理结果单元格中无关的<TD><TR>