XPath多条件查询需求:提取td[2]下b[font]或整个td[2]
解决方案
你可以使用以下XPath语句实现需求:
//div[@class='table-wrap']/table/tbody/tr/td[2]/b[font] | //div[@class='table-wrap']/table/tbody/tr/td[2][not(b[font])]
逻辑说明:
- 第一部分
//div[@class='table-wrap']/table/tbody/tr/td[2]/b[font]:匹配所有第二个<td>中包含<font>子元素的<b>元素,这是优先提取的目标。 - 第二部分
//div[@class='table-wrap']/table/tbody/tr/td[2][not(b[font])]:匹配所有第二个<td>中不存在包含<font>子元素的<b>元素的<td>本身,补全第一部分遗漏的情况。 - 用
|运算符将两部分结果合并,就能得到每个<tr>的第二个<td>对应的目标元素——有符合条件的<b>就取它,没有就取整个<td>。
对应示例HTML的匹配结果:
- ID001的第二个
<td>:匹配整个<td class='dashBoard'>Liam</td> - ID002的第二个
<td>:匹配<b><font color="#00875a">Noah</font></b> - ID003的第二个
<td>:匹配<b><font color="#00875a">James</font></b> - ID004的第二个
<td>:匹配<b><font color="#00875a">Lucie</font></b>
内容的提问来源于stack exchange,提问作者dramarama
相关产品推荐
相关产品推荐

