【发布时间】:2022-08-17 04:03:41
【问题描述】:
我有一个这样的 HTML:
<ol class=\"list\">
<li class=\"list-item \" id=\"37647629\">
<!---->
<div>
<!---->
<div>
<!---->
<book class=\"book\">
<div class=\"title\">
someText
</div>
<div class=\"year\">
2022
</div>
</book>
</div>
<!---->
</div>
<!---->
</li>
<li class=\"list-item \" id=\"37647778\">
<!---->
<div>
<!---->
<div>
<!---->
<book class=\"book\">
<div class=\"title\">
someOtherText
</div>
<div class=\"year\">
2014
</div>
</book>
</div>
</div>
<!---->
</li>
</ol>
我想得到第一本书的书名和年份,直接用两个xPath表达式。 我试过了 :
$x(\'//book\') => Ok, get the two books list
$x(\'//book[0]\') => Empty list
$x(\'//book[0]/div[@class=\"title\"]\') => Nothing
似乎我必须这样做:
$x(\'//book\')[0]
然后处理标题,但是为什么我不能只使用 Xpath 来执行此操作并使用 Xpath 表达式直接访问第一个标题?
-
(//book)[1]作为 xpath 有什么问题? -
没什么,我只是有点累,看不出它本身可能是一个 xpath 表达式,我认为 //book 是 xpath 而 [1] 是 JavaScript 之后;)
标签: node.js xml xpath puppeteer