如何定义按产品顺序优先提取价格、无价格则取替换提示的XPath
问题解决:XPath按产品顺序提取价格/缺货提示
原写法问题
你当前使用的XPath是全局范围直接匹配两类目标节点,返回顺序完全由节点在DOM树中的出现先后决定,若页面中所有价格节点的位置都早于缺货提示节点,就会出现先返回全部价格、再返回全部提示的乱序问题。
兼容XPath 1.0的正确写法(适配绝大多数爬虫、解析工具)
//div[@class="productInformations"]/descendant::*[self::dd[@class="yourPrice"] or self::div[@class="replacementPZNMessage"]]
实现逻辑
- 先定位所有产品的根容器
div.productInformations,遍历顺序和产品在页面的原有排列顺序完全一致 - 针对每个产品容器,在其后代节点中匹配你需要的两类目标:价格节点
dd.yourPrice、缺货提示节点div.replacementPZNMessage - 最终返回结果和产品顺序一一对应,针对你给出的示例结构,会按顺序返回
5,23$、Not available at the moment,完全符合需求。
内容的提问来源于stack exchange,提问作者glowworm123
相关产品推荐
相关产品推荐

