【发布时间】:2021-01-10 21:10:02
【问题描述】:
我正在使用 Puppeteer 抓取一堆页面。内容不区分类/ID/等。并且在页面之间以不同的顺序呈现。因此,我需要根据元素的内部文本来选择元素。我在下面包含了一个简化的示例 html:
<table>
<tr>
<th>Product name</th>
<td>Shakeweight</td>
</tr>
<tr>
<th>Product category</th>
<td>Exercise equipment</td>
</tr>
<tr>
<th>Manufacturer name</th>
<td>The Shakeweight Company</td>
</tr>
<tr>
<th>Manufacturer address</th>
<td>
<table>
<tr><td>123 Fake Street</td></tr>
<tr><td>Springfield, MO</td></tr>
</table>
</td>
</tr>
在本例中,我需要获取制造商名称和制造商地址。所以我想我需要根据嵌套 th 的内部文本选择适当的 tr 并在同一个 tr 中刮取关联的 td。请注意,此表的行顺序并不总是相同,并且该表包含的行比这个简化示例多得多,所以我不能只选择第 3 和第 4 个 td。
我尝试使用如下 XPATH 选择基于内部文本的元素,但它似乎不起作用:
var manufacturerName = document.evaluate("//th[text()='Manufacturer name']", document, null, XPathResult.ANY_TYPE, null)
这甚至不是我需要的数据(它将是与此相关联的 td),但我认为这至少是第 1 步。如果有人可以提供有关通过内部文本选择或选择与此相关联的 td 的策略的输入,我将不胜感激。
【问题讨论】:
标签: javascript node.js puppeteer innertext