【问题标题】:Excel VBA web scraping from tableExcel VBA网页从表中抓取
【发布时间】:2017-05-10 14:13:05
【问题描述】:

我正在尝试使用 VBL 将下表中的一些信息提取到 Excel 中,但没有成功。我需要的值似乎没有分配任何元素 ID、标签名称或类名称。我在同一行中的燃料使用值(89218)和时间值(01:15)之后。谁能指出我如何从表中抓取值,或如何从特定 TR、TD 中提取数据的正确方向。

表格的HTML源代码:

<h3>Airbus A300-600-PW4158 Fuel Planner</h3>
<p>London to Chicago  EGKK-KORD (3441 NM)<br /></p>
<h2>Total Fuel: 101901 POUNDS</h2>
<table width="100%" border=1>
    <tr>
        <th style="text-align:left;">&nbsp;</th>
        <th style="text-align:left;">Fuel</td>
        <th style="text-align:left;">Time</th>
    </tr>
    <tr>
        <td>Fuel Usage</td>
        <td>89218</td>
        <td>08:47</td>
    </tr>
    <tr>
        <td>Reserve Fuel</td>
        <td>12682</td>
        <td>01:15</td>
    </tr>
    <tr>
        <td>Fuel on Board</td>
        <td>101901</td>
        <td>10:02</td>
    </tr>
</table>

非常感谢。

【问题讨论】:

  • 你需要哪些值?
  • 我需要 98218 值和 08:47 值。

标签: html css vba excel web-scraping


【解决方案1】:

CSS 选择器:

无需查看更多 HTML,您可以使用以下 CSS 选择器选择器来显示 sn-p:

tr td:nth-child(2)
tr td:nth-child(3)

使用 CSS 选择器,这将带回带有 tr 的所有 2 或 3 个子 tds 的节点列表。

例如:

您可以通过索引访问 nodeList 中的单个项目。


VBA:

vba 中的整体语法类似于:

.document.querySelectorAll("tr td:nth-child(2)")(0).innerText

或者可能

.document.querySelectorAll("tr td:nth-child(2)").Item(0).innerText

0 是假设的。您需要检查完整的 HTML 以确定要使用的正确索引。

.document innerHTML 可以使用 IE 从.responseText 填充,例如,导航到页面。

【讨论】:

  • 这里假设 VBA 支持上述 nth-child 选择器
猜你喜欢
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2018-05-31
  • 2021-12-20
  • 1970-01-01
  • 2013-08-27
相关资源
最近更新 更多