You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用变量作为XPath表达式输出异常,求xidel正确用法及拼接优化

解决Xidel解析Reddit的两个问题

1. 变量简化后输出不一致的解决

原命令通过|合并两个节点集(所有href节点、所有h3文本节点)输出,分开用-se定义变量再用-e取节点可能因参数作用域导致输出异常。正确的做法是将变量定义与输出表达式放在同一个-e参数中:

xidel -e 'xp:=//div[@data-click-id="background"]/div[@data-adclicklocation="title"]/div/a[@data-click-id="body"]; $xp/@href|$xp/div/h3/text()' "https://www.reddit.com/r/bash"

2. 实现"url <描述>"的格式输出

你之前尝试的拼接方法错误在于针对所有href和文本整体处理,而非每个a标签单独拼接对应href与文本。正确写法如下:

直接写法

xidel -e '//div[@data-click-id="background"]/div[@data-adclicklocation="title"]/div/a[@data-click-id="body"]/concat(@href, " ", div/h3/text())' "https://www.reddit.com/r/bash"

变量简化写法

xidel -e 'xp:=//div[@data-click-id="background"]/div[@data-adclicklocation="title"]/div/a[@data-click-id="body"]; $xp/concat(@href, " ", div/h3/text())' "https://www.reddit.com/r/bash"

如果需要处理h3标签内多文本节点的情况,可改用string-join:

xidel -e 'xp:=//div[@data-click-id="background"]/div[@data-adclicklocation="title"]/div/a[@data-click-id="body"]; $xp/string-join((@href, div/h3/text()), " ")' "https://www.reddit.com/r/bash"

内容的提问来源于stack exchange,提问作者Gilles Quénot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:52:51