我正在使用 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)
这甚至不是我需要的数据(它应该是与这个th相关的td),但我想这至少是第一步。如果有人可以提供关于通过内部文本选择或选择与此th相关联的td的策略,我将不胜感激。