我在一个名为strResponse1
的ASP变量上保存了一个HTML结构我想要做的就是提取一个特定的表格。该表具有名为“dataTableParent”的常量类。我创建了一个使用Ubound和Lbound VBScript函数
提取表的简单代码Here is my simple code:
Dim str, tmp, toptmp, bottmp, tablestr
str = strResponse1
tmp = split(str, "dataTableParent")
toptmp = tmp(UBound(tmp))
tmp2 = split(toptmp, "</table>")
bottmp = tmp2(LBound(tmp2))
tablestr = "<table class=" & chr(34) & "dataTableParent" & bottmp & "</table>"
所以我使用ASP Trim函数,Ubound用于修剪Upper Bound字符串,LBound用于修剪Lower Bound字符串。我使用表类:dataTableParent
来获得上限修剪的起点,</table>
来获得下限修剪的结束点。代码在提取表格方面非常有效,但问题是,有时在父“<TD>
”上有另一个表格,我正在努力正确地提取表格。
检查此HTML示例以获取表结构
<html>
<head>
<title></title>
</head>
<body>
<table class="dataTableParent">
<tr>
<td>
<table>
<tr>
<td>This is an example of another table elements</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
由于我的代码仅识别第一个关闭表标记,因此修剪在找到第一个结束标记</table>
时停止,因为知道此处有两个关闭标记。那么我怎样才能在正确的结束标记上提取表格呢?有人可以帮忙吗?提前致谢。 :)
答案 0 :(得分:0)
一如既往:不要在HTML上使用字符串处理。
Option Explicit
Dim doc, table
Set doc = CreateObject("htmlfile")
' ... set strResponse1 ...
doc.write strResponse1
For Each table In doc.body.getElementsByTagName("TABLE")
If table.className = "dataTableParent" Then
' use DOM methods to navigate to correct table cell and extract data
' with the help of, e.g., innerText()
End If
Next