Node.js Can';无法从div中获取文本
我想从一些wikipedia页面(这只是学习node.js的示例)获取divNode.js Can';无法从div中获取文本,node.js,cheerio,node-fetch,Node.js,Cheerio,Node Fetch,我想从一些wikipedia页面(这只是学习node.js的示例)获取divmw content text的内容,我做了以下几点: var fetch = require('node-fetch'); var cheerio = require('cheerio'); var fs = require('fs'); var vv = [ 'https://en.wikipedia.org/wiki/Ben_Silbermann', 'https://en.wikipedia.org/
mw content text
的内容,我做了以下几点:
var fetch = require('node-fetch');
var cheerio = require('cheerio');
var fs = require('fs');
var vv = [
'https://en.wikipedia.org/wiki/Ben_Silbermann',
'https://en.wikipedia.org/wiki/List_of_Internet_entrepreneurs'
];
var bo=[],
$;
vv.forEach((t)=>{
fetch(t)
.then(res => res.text())
.then((body) => {
$ = cheerio.load(body);
var finded = $('#mw-content-text').text();
bo.push(finded);
});
});
console.log(bo);
如果我输出body,它将填充一个包含整个html页面的字符串(因此,这一步是可以的),
如果我输出$
它包含一个集合(但我不确定它是否已填充,我使用node.js命令提示符,但它似乎不是正确的工具,有什么建议吗?)
无论如何,变量
bo
返回一个空数组这里的问题是我们在fetch调用完成之前记录了bo。我建议使用语法确保我们等待所有get返回,然后我们可以记录结果
您可以进行更多的处理,如删除空行、空格等,但这应该不会太难
var fetch = require('node-fetch');
var cheerio = require('cheerio');
var vv = [
'https://en.wikipedia.org/wiki/Ben_Silbermann',
'https://en.wikipedia.org/wiki/List_of_Internet_entrepreneurs'
];
async function getDivcontent() {
const promises = vv.map(async t => {
const body = await fetch(t).then(res => res.text());
const $ = cheerio.load(body);
return $('#mw-content-text').text();
});
return await Promise.all(promises);
}
async function test() {
let result = await getDivcontent();
console.log("Result:" + result);
}
test();
当然这是个时间问题。。。非常感谢。很高兴能帮上忙!