我尝试在每次函数完成时使用新选项来调用 goforit() 函数。 我只是想修改actualpage的值并将其传递给baseuri。
你能帮忙吗?我像鱼一样转身
实际上该函数返回相同的选项,但实际页面的值正在改变
const rp = require('request-promise');
const cheerio = require('cheerio');
var cookiejar = rp.jar();
var actualpage = 1;
var baseuri = 'https://www.website.page=' + actualpage;
var options = {
uri: baseuri,
headers: {
'Host': 'www.website.com',
'Connection': 'keep-alive'
},
jar: cookiejar,
transform: function(body) {
return cheerio.load(body);
}
};
goforit()
function goforit() {
actualpage = actualpage + 1
baseuri = 'https://www.website.com' + actualpage;
setTimeout(function() {
rp(options)
.then(($) => {
var arr = 0
arr = $('.bt__media__content p')
var fruits = $('.bt__ment p');
fruits.each(function(i, elem) {
console.log(fruits[i].children[0].attribs)
});
goforit()
})
.catch((err) => {
console.log(err);
});
}, 3000);
}
最佳答案
我假设您使用的是最新的节点版本。
选项 = {...选项,uri:baseuri}
可以使用扩展运算符更新选项。
添加这一行,
const rp = require('request-promise');
const cheerio = require('cheerio');
var cookiejar = rp.jar();
var actualpage = 1;
var baseuri = 'https://www.website.page=' + actualpage;
var options = {
uri: baseuri,
headers: {
'Host': 'www.website.com',
'Connection': 'keep-alive'
},
jar: cookiejar,
transform: function(body) {
return cheerio.load(body);
}
};
goforit()
function goforit() {
actualpage = actualpage + 1
baseuri = 'https://www.website.com' + actualpage;
// add this line
options = {...options, uri: baseuri}
setTimeout(function() {
rp(options)
.then(($) => {
var arr = 0
arr = $('.bt__media__content p')
var fruits = $('.bt__ment p');
fruits.each(function(i, elem) {
console.log(fruits[i].children[0].attribs)
});
goforit()
})
.catch((err) => {
console.log(err);
});
}, 3000);
}
关于javascript - 如何使用 Cheerio 和循环函数传递新选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902341/