我想从存储在数组中的维基百科链接制作我的个人抓取工具,但是异步 javascript 有一些问题,我想我只是没有足够了解整个异步概念。
所以基本上,在每次迭代中,我希望我的 axios.get 链接成为数据数组中的下一个内容,并完成整个抓取过程,当它结束时,它采用数组中的下一个链接并重复整个过程,直到它循环所有数组链接说。 我知道如何以同步方式进行,但这种异步方式对我来说只是另一个世界。
const cheerio = require('cheerio');
const axios = require('axios');
var fs = require('fs');
const data = ["a","b","c","d","e"];
for(let i = 0; i < data.length; i++){
let link = data[i];
axios.get(link).then((res) => {
let $ = cheerio.load(res.data);
$('div.class.xyz').each(element => {
let post = $(element).text();
console.log(post);
let input = '{' + JSON.stringify(post) + '},' + '\n\n';
fs.appendFileSync('info.json', input);
// console.log('Saved!');
// console.log(index);
})
})
}
答案 0 :(得分:0)
试试这个:
const cheerio = require('cheerio');
const axios = require('axios');
const fs = require('fs');
(async () => {
const data = ["a","b","c","d","e"];
for(let i = 0; i < data.length; i++){
let link = data[i];
const res = await axios.get(link);
let $ = cheerio.load(res.data);
$('div.class.xyz').each(element => {
let post = $(element).text();
console.log(post);
let input = '{' + JSON.stringify(post) + '},' + '\n\n';
await fs.appendFile('info.json', input);
// console.log('Saved!');
// console.log(index);
});
}
})();