如何使用javascript在ul中循环li
我想在ul>中循环每个li>,然后将它们添加到一个数组中。我应该如何创建一个for循环来返回每个li并将它们放入数组中。我被卡住的地方是把li循环起来如何使用javascript在ul中循环li,javascript,web-scraping,web-deployment-project,nightmare,Javascript,Web Scraping,Web Deployment Project,Nightmare,我想在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)
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>
通过将原始函数调整为使用
子属性而不是innerText
属性,可以获得所有
的数组
例如:
function () {
var ht = document.querySelector('#toc > ul > li.toclevel-1.tocsection-5 > ul
').children;
return ht;
}
这将返回一个包含所有
子元素的数组。问题是,当您在then()中预期结果时,会调用undernedream.ipc,并尝试stringify/destringify将其发送到您的应用程序。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' ]
const噩梦=require(“噩梦”);
const噩梦=噩梦({
秀:没错,
openDevTools:是的,
});
噩梦
后藤先生('https://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux')
.评估(功能(选择器){
var links=document.queryselectoral(选择器);
通过的var=[];
对于(var ii=0;ii感谢您的回复。如果我这样做,我会得到以下结果:$node stackOverflow.js{'0':{},'1':{},'2':{},'3':{},'4':{},'5':{}
类似于空数组。由于我在报告中提到的原因,这不会起作用answer@devilpreet谢谢!!正是我想要的。