Javascript 转到下一页并在噩梦中删除链接
我正试图转到下一页,并使用Javascript 转到下一页并在噩梦中删除链接,javascript,node.js,nightmare,Javascript,Node.js,Nightmare,我正试图转到下一页,并使用噩梦ejs将链接刮到最后一个可用的页面。尽管我遇到了一些问题,而且在如何让它发挥作用方面没有任何运气 代码 const Nightmare = require('nightmare'); const nightmare = Nightmare({ show: true, executionTimeout: 3000}) const imageUrl = []; function getImages() { const images = document.quer
噩梦ejs
将链接刮到最后一个可用的页面。尽管我遇到了一些问题,而且在如何让它发挥作用方面没有任何运气
代码
const Nightmare = require('nightmare');
const nightmare = Nightmare({ show: true, executionTimeout: 3000})
const imageUrl = [];
function getImages() {
const images = document.querySelectorAll('.item a img');
const img = [];
for(let i = 0; i<images.length; i++) {
img.push(images[i].src);
}
return img;
}
nightmare
.goto('https://hidurl/images/search/dogs/')
.scrollTo(20368, 0)
.wait(1000)
.evaluate(getImages)
.then(a => {
const aFiltered = a.filter(word => word.includes('.jpg'));
for(let i = 0; i<aFiltered.length; i++) {
imageUrl.push(aFiltered[i]);
}
console.log(imageUrl);
return nightmare
.click('#content > div > a')
.scrollTo(20368, 0)
.wait(1000)
.evaluate(getImages)
.then( a => {
const aFiltered = a.filter(word => word.includes('.jpg'));
for(let i = 0; i<aFiltered.length; i++) {
imageUrl.push(aFiltered[i]);
}
console.log(imageUrl);
})
})
.catch(error => {
console.error(error)
})
const噩梦=require(“噩梦”);
常量噩梦=噩梦({show:true,executionTimeout:3000})
常量imageUrl=[];
函数getImages(){
const images=document.queryselectoral('.item a img');
常数img=[];
for(设i=0;i{
常量aFiltered=a.filter(word=>word.includes('.jpg'));
for(设i=0;i{
常量aFiltered=a.filter(word=>word.includes('.jpg'));
for(设i=0;i{
控制台错误(错误)
})
我想获得一个包含页面上所有可用链接的数组。目前我最多只能访问两个页面,而无需重复代码。我正从噩梦开始,希望能找到一些帮助,帮助我在移动时浏览多个页面并填充数组。好的,使用生成器函数和控制流修复了问题否去图书馆
const噩梦=require(“噩梦”);
const vo=要求('vo');
const噩梦=噩梦({show:true,executionTimeout:3000});
常量imageUrl=[];
函数getImages(){
const images=document.queryselectoral('.item a img');
常数img=[];
for(设i=0;idiv>a”);
while(nextExists&¤tPage{
常量aFiltered=a.filter(word=>word.includes('.jpg'));
for(设i=0;i分区>a”)
.wait(‘body’)
.等待(1000);
currentPage++;
nextExists=yield dream.exists(“#content>div>a”);
}
console.table(imageUrl);
结束();
}
现在可以使用梦魇EJS进入任何网站上的多个分页页面。你在哪里附加了单击功能?它给了你什么错误?评估后,它给了catch claw错误。我还添加了等待,看看它是否单击,但没有。具体错误是什么?你能将代码更改为
.catch(console.error)吗
并分享错误?@Md.AbuTaher我已经更新了问题和代码,但无法确定如何重复这些过程,直到最后一页。
const Nightmare = require('nightmare');
const vo = require('vo');
const nightmare = Nightmare({ show: true, executionTimeout: 3000 });
const imageUrl = [];
function getImages() {
const images = document.querySelectorAll('.item a img');
const img = [];
for (let i = 0; i < images.length; i++) {
img.push(images[i].src);
}
return img;
}
vo(run)(function(err, result) {
if (err) throw err;
});
function* run() {
let MAX_PAGE = 5,
currentPage = 0,
nextExists = true;
yield nightmare
.goto('https://someurl/images/search/dogs/')
.scrollTo(20368, 0)
.wait(1000);
nextExists = yield nightmare.exists('#content > div > a');
while (nextExists && currentPage < MAX_PAGE) {
yield nightmare
.scrollTo(20368, 0)
.wait(1000)
.evaluate(getImages)
.then(a => {
const aFiltered = a.filter(word => word.includes('.jpg'));
for (let i = 0; i < aFiltered.length; i++) {
imageUrl.push(aFiltered[i]);
}
});
yield nightmare
.click('#content > div > a')
.wait('body')
.wait(1000);
currentPage++;
nextExists = yield nightmare.exists('#content > div > a');
}
console.table(imageUrl);
yield nightmare.end();
}