如何编写最佳XPath提取<td>配对文本,排除无对应项内容?
精准提取配对文本的XPath方案
核心需求分析
要提取的是成对出现的有效文本,需排除以下无效内容:
- 包含嵌套表格的行
- 带有
colspan="2"的行 - 空或仅含无关文本的行
- 嵌套表格内的非目标行(如含"Adjustment"的行)
1. 提取顶层表格的配对文本(对应text1、text2)
如果目标是顶层表格中无嵌套、无colspan的配对,使用以下XPath定位目标行,再提取每行的两个文本:
//div[contains(@class, 'tab_product_details')]/table/tbody/tr[count(td)=2 and not(td/table)]
遍历每个匹配的<tr>,分别提取第一个和第二个<td>的文本即可得到成对的text1和text2。
若要直接提取所有符合条件的节点:
//div[contains(@class, 'tab_product_details')]/table/tbody/tr[count(td)=2 and not(td/table)]/td
2. 提取嵌套表格中class为feature的配对文本(对应text3、text4)
针对嵌套表格内class为feature的目标行,直接通过类名精准定位:
//div[contains(@class, 'tab_product_details')]//tr[@class='feature']/td
该XPath会跳过嵌套表格内的无关行(如含"Adjustment"的行),仅提取目标行的两个文本。
关键过滤逻辑说明
count(td)=2:确保每行有且仅有两个配对的,排除行数不对的无效行not(td/table):排除包含嵌套表格的所在行,避免误提取子表格内容@class='feature':利用目标行的类属性精准定位,跳过无关行
内容的提问来源于stack exchange,提问作者VladimirLenin
相关产品推荐
相关产品推荐

