我正在尝试从具有未知行数和列数的表的最后两列中的所有单元格中检索数据。我必须通过VBScript做到这一点,我遇到了困难。
在下面的示例中,每行有5列。但是在我的情况下,行数和列数会有所不同。
我想获取最后两列中的数据,第一行是 2015年和 2016年, 444 和<第二行中强> 555 等。由于行和列是变化的,我找不到用于检索数据的拟合脚本。
数据应该作为变量列出,因为我需要将它们解析为输入字段。
<table id="calculations_data" class="key_figures togglable">
<tr>
<th></th>
<th scope="col">Year 2012</th>
<th scope="col">Year 2013</th>
<th scope="col">Year 2014</th>
<th scope="col">Year 2015</th>
<th scope="col">Year 2016</th>
<th></th>
</tr>
<tr id="turnover_data" class="data_row addaptive">
<th class="title"><a href="#turnover_definition">Turnover</a></th>
<td>111</td>
<td>222</td>
<td>333</td>
<td>444</td>
<td>555</td>
</tr>
</table>
此外,数据位于我通过此脚本访问的网站中:
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "https://data.biq.dk/users/sign_in"
注意:以上网站需要我通过我的脚本管理的登录信息。无法提供登录详细信息。
我已经成功使用下面的代码,其中数据位于标记中。
Data_CompanyName = IE.document.getElementsByTagName("h1")(0).innerText
Document.getElementByID("company_name").value = Data_CompanyName
答案 0 :(得分:0)
我们可以首先提取该表的innerHTML,并在解析XML时解析innerHTML。不确定这是否是最好的方法,但它对我有用。
试试这段代码:
set objIE = CreateObject("internetexplorer.application")
objIE.visible = true
objIE.navigate "https://data.biq.dk/users/sign_in" '<--make sure the correct path is entered here(the one which takes you to that page containing the table)
while objIE.readyState <>4
Wscript.sleep 1000
Wend
set objTable = objIE.document.getElementById("calculations_data")
strxml = objTable.innerhtml
set objXML = CreateObject("Microsoft.XMLDOM")
objXML.async=False
objXML.loadxml strxml
set objRowNodes = objXML.selectnodes("//tr")
for i=1 to objRowNodes.length-1
tempArr = split(objRowNodes(i).text)
msgbox "second last: "&tempArr(ubound(tempArr)-1)&vbcrlf&_ 'Displays the 2nd last column data
"last: "&tempArr(ubound(tempArr)) 'Displays the last column data
next
输出: