如何使用Xidel将书籍标题与价格合并打印在同一行?
解决Xidel抓取书籍标题和价格同行输出的问题
你的问题出在之前的XPath没有按单本书的容器节点分组提取,而是把所有标题、价格节点单独拉出来,自然没法成对同行输出。
直接用下面的命令就能实现「title --> price」的同行格式:
./xidel -e '//article[@class="product_pod"]/concat(h3/a/@title, " --> ", p[@class="price_color"])' https://books.toscrape.com
关键逻辑说明:
//article[@class="product_pod"]:定位页面上每一本书的外层容器节点,每个节点对应完整的单本书信息concat(A, " --> ", B):XPath的字符串拼接函数,把标题和价格用指定分隔符连在一起h3/a/@title:抓取书籍的完整标题(页面显示的h3文本是截断的,@title属性才是完整书名);如果想要页面显示的截断文本,换成h3/a/text()即可- 不需要额外加
doc(),Xidel支持直接把目标URL作为参数传入
如果偏好更清晰的循环写法,也可以用for表达式:
./xidel -e 'for $book in //article[@class="product_pod"] return concat($book/h3/a/@title, " --> ", $book/p[@class="price_color"])' https://books.toscrape.com
内容的提问来源于stack exchange,提问作者SebastianM
相关产品推荐
相关产品推荐

