为了解析reddit.com
,我使用
xidel -e '//div[@data-click-id="background"]/div[@data-adclicklocation="title"]/div/a[@data-click-id="body"]/@href|//div[@data-click-id="background"]/div[@data-adclicklocation="title"]/div/a[@data-click-id="body"]/div/h3/text()' "https://www.reddit.com/r/bash"
因此,基本XPath
重复了2次,然后我决定使用xidel
变量:
xidel -se 'xp:=//div[@data-click-id="background"]/div[@data-adclicklocation="title"]/div/a[@data-click-id="body"]' \
-e '$xp/@href|$xp/div/h3/text()' 'https://www.reddit.com/r/bash'
但输出与先前命令不同。
奖金,如果有人可以给予一个方法来删除\n
串联,但空间串联,尝试fn:string-join()
和fn:concat()
没有雪茄。
也尝试了|| " " ||
,但不是每个匹配项的预期url <description>
1条答案
按热度按时间kmbjn2e31#
如果添加了
--extract-exclude=xp
,输出也不会有什么不同,请参见我的答案here,特别是自述文件中的引用。你可能会看到:
这些是XPath表达式中的文本节点,它实际上保存了元素节点,但是
--output-node-format=text
毕竟是默认的。不过这种情况下确实不需要这种内部变量,我个人只在导出系统变量时使用,如果你 * 想 * 使用变量,使用FLWOR表达式:
但最简单的查询(不需要变量)可能是:
字符串连接非常简单:
对于
||
,不要忘记括号,否则div/h3
没有上下文项。最后一个是Xidel自己的扩展字符串语法。
或者,您可以解析这个巨大的JSON,它会列出更多Reddit问题: