我有一个脚本可以抓取一个网站,并应该将数据发送回客户端...只需让您知道app.get内所有内容
这是代码...第二个.then不起作用。一旦遍历数组,应该将数组填充到客户端之后再发送给客户端。但这不起作用...我设定第二个承诺的方式可能有问题吗?请帮忙。
axios.get("https://www.sciencenews.org/").then(function(response){
var $ = cheerio.load(response.data);
$("div.field-item-node-ref").each(function(i,element){
if($(element).children('.ad').length == 0 && $(element).children('article').length > 0) {
array1.push($(element).find('h2.node-title').text());
array2.push($(element).find('div.content').text());
array3.push(`https://www.sciencenews.org${$(element).find('a').attr('href')}`);
array4.push(`${$(element).find('img').attr('src')}`);
}
})
}).then(()=>{
res.send({titles:array1,summaries:array2,links:array3,base64img:array4});
})
答案 0 :(得分:1)
在提供的代码段中,没有声明任何数组,并且由于没有任何对象传递到函数中,因此没有res对象可以调用“ send”。
一旦声明了数组并将res临时替换为console.log,它似乎可以正常工作。
我假设您在路由中调用了此函数,因此在此函数的范围内应该有一个“ res”对象可用。如果是这样的话,看来只是在将数据推送到数组之前声明数组而已。