Javascript 如何使用querySelector获取最后一个元素?
我从一个有很多嵌套HTML元素的网站上抓取,但我感兴趣的是Javascript 如何使用querySelector获取最后一个元素?,javascript,puppeteer,Javascript,Puppeteer,我从一个有很多嵌套HTML元素的网站上抓取,但我感兴趣的是abbr元素。在我的例子中,那些abbr元素具有data-utime属性,因此它们被定义为一些其他嵌套的HTML。因此,我想做的是获取页面上最后一个abbr元素的data-utime属性值 我试着这样做: const SELECTOR = 'abbr:last-child'; const result = await page.evaluate((selector) => { return document.querySelec
abbr
元素。在我的例子中,那些abbr
元素具有data-utime
属性,因此它们被定义为一些其他嵌套的HTML
。因此,我想做的是获取页面上最后一个abbr
元素的data-utime
属性值
我试着这样做:
const SELECTOR = 'abbr:last-child';
const result = await page.evaluate((selector) => {
return document.querySelector(selector);
}, SELECTOR);
console.log(result);
console.log(typeof(res));
console.log(result.getAttribute('data-utime'));
但问题是,在我得到的输出中,
result
只是一个空对象({}
),因此typeof(res)
返回对象,当然它没有getAttribute
函数。我还认为last child
选择器是获取页面上最后一个abbr
元素的正确方法。如何实现我想要的任何想法?评估
在页面上下文中运行;结果被序列化并返回。改用$$eval
:
const SELECTOR = "abbr";
const result =
await page.$$eval(SELECTOR,
(elements) => elements[elements.length - 1].dataset.utime);
console.log(result);
你也可以使用
evaluate
并调用document.queryselectoral
,但我更喜欢将选择器保存在我的木偶程序代码中,这样我就可以重用它们。我相信文档。$$eval
应该是页面。$$eval
在我的情况下。哦,是的,对不起。因为我错误地建议了evaluateHandle
,所以赶紧重写。很高兴听到这个消息!