XPath的following-sibling用于爬取兄弟节点未返回兄弟节点。

7

我正在尝试创建一个网络爬虫,从供应商网站中提取一些属性数据,以便与我们的内部属性数据库进行审核。我刚开始使用import.io。我看了很多视频,但是虽然我的语法似乎没问题,但手动xpath覆盖功能却没有返回属性值。以下是我使用的示例html代码:

<table>
<tbody><tr class="oddRow">
<td class="label">&nbsp;Adhesive Type&lrm;</td><td>&nbsp;Epoxy&lrm;
</td>
</tr>
<tr>
<td class="label">&nbsp;Applications&lrm;</td><td>&nbsp;Hard Disk Drive Component Assembly&lrm;
</td>
</tr>
<tr class="oddRow">
<td class="label">&nbsp;Brand&lrm;</td><td>&nbsp;Scotch-Weld&lrm;
</td>
</tr>
<tr>
<td class="label">&nbsp;Capabilities&lrm;</td><td>&nbsp;Sustainability&lrm;
</td>
</tr>
<tr class="oddRow">
<td class="label">&nbsp;Color&lrm;</td><td>&nbsp;Clear Amber&lrm;
</td>

我正在尝试编写一个XPath following-sibling语句,通过import.io爬虫获取“Color”信息。当我选择“Color”时,XPath代码如下:
//*[@id="attributeList"]/table/tbody/tr[5]/td[1]

我尝试使用:

//*[@id="attributeList"]/table/tbody/tr/td[.="Color"]/following-sibling::td

但它并没有从表格中获取颜色属性值。我不确定这是否与奇数行和偶数行类有关?当我查看HTML时,它似乎很合乎逻辑;颜色是"Color",属性值在以下td括号中。
1个回答

7
所选td节点中的文本不仅包含"Color",还有&nbsp;Color&lrm;。因此,您可以选择文本包含字符串"Color"td节点:
'//*[@id="attributeList"]/table/tbody/tr/td[contains(text(), "Color")]/following-sibling::td/text()'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接