gpt4 book ai didi

javascript - 如何使用JavaScript在ul中遍历li

转载 作者:行者123 更新时间:2023-12-03 13:24:00 26 4
gpt4 key购买 nike

我想遍历ul>中的每个li>,然后将它们添加到数组中。我应该如何创建一个for循环以返回每个li并将它们放入数组。使li陷入循环是我被困住的地方。

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: false })

nightmare
.goto('https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux')

.wait(500)
.evaluate(function () {
var ht = document.querySelector('#toc > ul > li.toclevel-1.tocsection-5 > ul
').innerText;
return ht;
})
.end()
.then(function (result) {
console.log(result)
})
.catch(function (error) {
console.error('Search failed:', error);
});

输出:
PS C:\scrapping> node .\2.js
5.1 RHEL 2.1
5.2 RHEL 3
5.3 RHEL 4
5.4 RHEL 5
5.5 RHEL 6
5.6 RHEL 7

PS C:\scrapping>

最佳答案

问题是,当您期望then()中的结果时,将在nightmare.ipc下面调用,并且它将尝试进行字符串化/解串化以将其发送到您的应用程序。 HTMLElements(由document.querySelectorAll()返回)可能无法字符串化,并且此类错误可以在browserWindow的开发人员控制台中看到。

您可以轻松地做到这一点:

const Nightmare = require('nightmare');
const nightmare = Nightmare({
show: true,
openDevTools: true,
});

nightmare
.goto('https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux')
.evaluate(function(selector) {
var links = document.querySelectorAll(selector);
var passed = [];
for(var ii=0; ii<links.length; ii++) {
passed.push(links[ii].textContent);
}
return passed;
}, '#toc > ul > li.toclevel-1.tocsection-5 > ul > li')
.then(function(result) {
console.log(result); // Outputs length.
})
.catch(function(error) {
console.error('Failed', error);
});

//Output
[ '5.1 RHEL 2.1',
'5.2 RHEL 3',
'5.3 RHEL 4',
'5.4 RHEL 5',
'5.5 RHEL 6',
'5.6 RHEL 7' ]

关于javascript - 如何使用JavaScript在ul中遍历li,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com