从下一个HTML标记中获取数据

时间:2015-08-25 11:41:24

标签: html excel vba

使用此HTML代码:

<table class="table-grid">
<tr>
<th>auto.model</th>
  <td>
    <pre>'Toyota Avensis Wagon'</pre>
  </td>
</tr>
<tr>
<th>auto.year</th>
  <td>
    <pre>2005</pre>
 </td>
</tr>
</table>

如果我采用参数&#34; auto.model&#34;在<th></th>标签之间,想要接收&#34;丰田Avensis Wagon&#34;,即<pre></pre>之间的下一个表达。理想情况下,我希望有这样的功能。

谢谢@Jeeped,但代码提升&#34;类型不匹配&#34;错误并指向Set el = Param.PreviousSibling Sub Extract_TD_text() Dim URL As String Dim IE As InternetExplorer Dim HTMLdoc As HTMLDocument Dim Params As IHTMLElementCollection Dim Param As HTMLTableCell Dim Val As HTMLTableCell Dim r As Long Dim el As HTMLTableCell URL = "My URL" Set IE = New InternetExplorer With IE .navigate URL .Visible = False 'Wait for page to load While .Busy Or .READYSTATE <> READYSTATE_COMPLETE: DoEvents: Wend Set HTMLdoc = .document End With Set Params = HTMLdoc.getElementsByTagName("tr") For Each Param In Params If Param.innerText Like "*auto.model*" Then Set el = Param.PreviousSibling Exit For End If Next If Not el Is Nothing Then Debug.Print el.innerText IE.Quit Set IE = Nothing End Sub

1 个答案:

答案 0 :(得分:0)

我不建议使用previousSibling,而是建议使用nextElementSibling

从当前设置HTML和VBA代码的方式来看,传递的当前“参数”值应为<th>标记。我认为previousSibling可能会检查之前的标记,并且因为它是<tr>(父元素)中的第一个元素,所以不应该有任何东西(除了可能是一个不可见的节点 - previousSibling 可以查找,但我们不需要)。

认为 nextElementSibling应该能够找到您的<td>标记,因为它位于<th>标记之后。