gpt4 book ai didi

node.js - 返回使用 nodejs 抓取网页的 URL

转载 作者:搜寻专家 更新时间:2023-11-01 00:44:52 26 4
gpt4 key购买 nike

我正在尝试构建一个简单的网络应用程序,使用 nodejs 及其 2 个模块请求和 cheerio 抓取网站。

我设法用下面的代码做到这一点:

    var printURL=function(url){
request(url, (function() {
return function(err, resp, body) {
if (err)
throw err;
$ = cheerio.load(body);

$('img').each(function(){
console.log($(this).attr('src'));
});

}
} )());
};

在网站上打印图片的 URL 效果很好,但我在这里真正想做的是创建一个我可以在函数之外使用的 url 列表。我以这种方式尝试过,但它返回一个空列表:

var urlList=[];     
var printURL=function(url){
request(url, (function() {
return function(err, resp, body) {
if (err)
throw err;
$ = cheerio.load(body);

$('img').each(function(){
urlList.push($(this).attr('src'));
});

}
} )());
};

我该如何解决这个问题?非常感谢

最佳答案

您需要等到所有回调完成。

var urlList=[];     
var printURL=function(url){
request(url, (function() {
return function(err, resp, body) {
if (err)
throw err;
$ = cheerio.load(body);
var images = $('img');
var counter = images.length;
images.each(function(){
urlList.push($(this).attr('src'));
counter--;
if (counter==0) {
// now we have all images!!
console.log(urlList);
}
});

}
})());
};

这是 node.js 异步特性的一部分。如果事情变得更复杂,我建议您使用流量控制库,如 async .

关于node.js - 返回使用 nodejs 抓取网页的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072536/

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