excel - VBA Excel在HTMLObject中获取文本

标签 excel vba internet-explorer getelementbyid getelementsbyclassname

我知道这对你们中的一些人来说真的很容易。但是我一直在互联网上深入,我找不到答案。我需要获取内部的公司名称
tbody tr td a eBay-tradera.com

td class="bS aR" 970,80/td /tr /tbody

<tbody id="matrix1_group0">
<tr class="oR" onmouseover="onMouseOver(this, false)" onmouseout="onMouseOut(this, false)" onclick="onClick(this, false)">
<td class="bS">&nbsp;</td>
<td>
<a href="aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848" title="http://www.tradera.com/" target="_blank">

   eBay-Tradera.com

</a>
</td>
<td class="aR">
<a href="/pan/aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848" title="/pan/aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848">175</a></td>
<td class="bS aR">0</td><td class="bS aR">0</td><td class="bS aR">187</td>
<td class="aR">0,00%</td><td class="bS aR">124</td>
<td class="aR">0,00%</td>
<td class="bS aR">26</td>
<td class="aR">20,97%</td>
<td class="bS aR">32</td>
<td class="aR">60,80</td>
<td class="aR">25,81%</td>
<td class="bS aR">5&nbsp;102,00</td>
<td class="bS aR">0,00</td>
<td class="aR">0,00</td>
<td class="bS aR">

   970,80

</td>
</tr>
</tbody>

这是我的代码,我只尝试让 a 标签开始,但我也无法让它工作
Set TDelements = document.getElementById("matrix1_group0").document.getElementsbytagname("a").innerHTML
r = 0
C = 0

For Each TDelement In TDelements
Blad1.Range("A1").Offset(r, C).Value = TDelement.innerText
r = r + 1
Next

事先谢谢我知道这可能很简单。但我希望其他人可能有同样的问题,这对他们也有帮助。 “r = r + 1”的原因是因为这个名单上有更多的公司。我只是想让它尽可能简单。再次感谢!

最佳答案

您将需要在表中指定元素位置。 Ebay 似乎混淆了类名,所以我们不能依赖这些是一致的。我通常也不会通过它们的表索引一致来依赖元素,但我看不到任何解决方法。

我假设这是您正在搜索的 HTML 文档

<tbody id="matrix1_group0">
  <tr class="oR" onmouseover="onMouseOver(this, false)" onmouseout="onMouseOut(this, false)" onclick="onClick(this, false)">
    <td class="bS">&nbsp;</td>
    <td>
      <a href="aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848" title="http://www.tradera.com/" target="_blank">
        eBay-Tradera.com  <!-- <=== You want this? -->
      </a>
    </td>
    <!-- ... -->
  </tr>
  <!-- ... -->
</tbody>

我们可以忽略文档的其余部分,因为表格元素有一个 ID。简而言之,我们假设
.getElementById("matrix1_group0").getElementsByTagName("TR")

将返回按外观排序的 html 行对象的集合。
Set matrix = document.getElementById("matrix1_group0")
Set firstRow = matrix.getElementsByTagName("TR")(1)
Set firstRowSecondCell = firstRow.getElementsByTagName("TD")(2)
traderaName = firstRowSecondCell.innerText

当然,您可以将这一切内联为
document.getElementById("matrix1_group0").getElementsByTagName("TR")(1).getElementsByTagName("TD")(2).innerText

但这会使调试更加困难。此外,如果网页以不同的格式呈现给您,那么这将不起作用。 Ebay 故意让您难以从其中刮取数据以确保安全。

关于excel - VBA Excel在HTMLObject中获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27115008/

相关文章:

Excel VBA 按顺序生成随机数并根据多少个

vba - 字体颜色更改为白色而不是灰色

HTML/IE : stretch image to fit, 保留纵横比

excel - 从变量命名工作表

vba - Characters.Insert 方法 (Excel) 将文本限制为 255 个字符

excel - VBA:计算表中的行数(列表对象)

arrays - 带索引的 3D 数据结构

excel - 自定义按钮事件处理类

javascript - jquery.find()在ie中返回null,但在其他浏览器中不返回

css - IE9 无法在 iFrame 中呈现 css 的原因有哪些?