我一直在寻找任何可能解决此问题的方法。
我公司的所有数据都是通过一个生成静态HTML页面的门户网站访问的。不幸的是,我们的部门无法直接访问服务器,这将使我的生活变得简单,因此我需要页面抓取此门户网站以查找我需要的数据。我的导航很好,我在抓取元素命名或给出ID时非常有经验,但是这也没有。
无论如何,背景不受影响。
我想从页面中抓取一个表格,该表格具有独特的"空单元格:show;":
<TABLE cellspacing=10 cellPadding=10 border="1" style="empty-cells: show;">
</TABLE>
或者说第一行中的标题始终包含相同的文本字符串。一旦我拥有该表,我就可以操作我需要的数据。这里的人非常敏感,所以我不能提供完整的页面代码。
我知道有很多关于GetElementByRegex的帖子,但我找不到真正解释如何使用它的帖子或网站。相反,他们都希望我安装他们的附加组件,这不是一个选择(我需要学习这个以满足我对知识的渴望)。
为了帮助我添加下面的完整表格代码,删除敏感数据:
<TABLE cellspacing=10 cellPadding=10 border="0" width=100%>
<tr>
<td>
<TABLE cellspacing=10 cellPadding=10 border="1" style="empty-cells: show;">
<TR class="row0">
<TD style="width: 25%; background-color: #A3DCF5;"><strong>TITLE:</strong></TD>
<TD>LINE1</TD>
</TR>
<TR class="row1">
<TD> </TD><td>LINE2</td>
</TR>
<TR class="row0">
<TD> </TD><td>LINE3</td>
</TR>
<TR class="row1">
<TD> </TD><td>LINE4</td>
</TR>
<TR class="row0">
<TD> </TD><td>LINE5</td>
</TR>
</TABLE>
</td>
</tr>
</TABLE>
还有很多其他表格,所以使用Len检查不会帮助我筛选TD标签。
答案 0 :(得分:1)
Dim tbls, tbl, tr, j, td, row, sht
Set tbls = IE.document.getElementsByTagName("table")
For Each tbl in tbls
'item indexes are zero-based (AFAIR)
If tbl.Rows(0).Cells(1).innerText = "LINE1" Then
'EDIT: extracting the table contents
Set sht = ActiveSheet
row = 3
For Each tr In t.getelementsbytagname("TR")
j = 1
For Each td In tr.getelementsbytagname("TD")
sht.Cells(row + 1, j).Value = td.innerText
j = j + 1
Next
row = row + 1
Next
Exit For 'stop looping
End If
Next
答案 1 :(得分:0)
Glitch_Doctor的答案毫无疑问地被编辑:
谢谢蒂姆的所有帮助!
以下内容对我来说很完美:
Dim tbls, tbl
Dim L1, L2, L3, L4, L5 As String
Set tbls = IE.Document.getElementsByTagName("table")
For Each tbl In tbls
If tbl.Rows(0).Cells(0).innerText = "Card Address:" Then
On Error Resume Next
L1 = tbl.Rows(0).Cells(1).innerText
L2 = tbl.Rows(1).Cells(1).innerText
L3 = tbl.Rows(2).Cells(1).innerText
L4 = tbl.Rows(3).Cells(1).innerText
L5 = tbl.Rows(4).Cells(1).innerText
Exit For
End If
Next
Worksheets("Sheet2").Range("A1").Value = L1
Worksheets("Sheet2").Range("A2").Value = L2
Worksheets("Sheet2").Range("A3").Value = L3
Worksheets("Sheet2").Range("A4").Value = L4
Worksheets("Sheet2").Range("A5").Value = L5
End Sub