Node.js 尝试从API提取数据时创建多个副本
试图从node.js API中提取数据 但是,当我尝试基于多个globalid(我使用global id从API获取输出)提取数据时,在合并数据集时,我会不断得到多个重复数据。不知道我做错了什么,在实际的全局_id数据集中没有重复项,已经检查了多次 这是我的代码:Node.js 尝试从API提取数据时创建多个副本,node.js,web-scraping,Node.js,Web Scraping,试图从node.js API中提取数据 但是,当我尝试基于多个globalid(我使用global id从API获取输出)提取数据时,在合并数据集时,我会不断得到多个重复数据。不知道我做错了什么,在实际的全局_id数据集中没有重复项,已经检查了多次 这是我的代码: const boxrec = require("boxrec").Boxrec; const fastcsv = require('fast-csv'); const fs = require('fs'); async functi
const boxrec = require("boxrec").Boxrec;
const fastcsv = require('fast-csv');
const fs = require('fs');
async function getCookieJar(){
try {
const cookieJar = await boxrec.login('**','***');
return cookieJar;
} catch (e) {
console.log("Login error: " + e);
}
};
async function writeData() {
const csv = require('csv-parser')
const results = [];
fs.createReadStream('C:\\Users\\User\\Documents\\completed16.csv')
.pipe(csv())
.on('data',(data)=> results.push(data))
.on('end', async () => {
const cookieJar = await getCookieJar();
const promises = [];
results.forEach((data) => {
promises.push(boxrec.getPersonById(cookieJar,data.global_id));
})
const fighters = await Promise.all(promises);
fighters.forEach((fighter) => {
let data = '';
for (const key in fighter.output) {
if (Array.isArray(fighter.output[key])) {
data += JSON.stringify(fighter.output[key]) + ',';
} else if (typeof fighter.output[key] === 'object') {
data += JSON.stringify(fighter.output[key]) + ',';
} else {
data += fighter.output[key] + ',';
}
}
data = data.replace(/(^,)|(,$)/g, "");
data += '\n';
fs.appendFile('C:\\Users\\User\\Documents\\fin16.csv',data, (err) => {
if (err) throw err;
});
});
});
};
try {
writeData();
} catch (error) {
console.log("Error in writeData: " + error);
以下是completed16中的数据示例:
并非每一行都是重复的,但例如completed6有100个唯一的GlobalID,创建的输出将包含100行,但某些全局ID会重复多次(对于某些全局ID,重复次数高达13次)
我给API的作者发了电子邮件,他认为当我将数据写入csv时可能会出现问题,这只是一个观察:当您附加“数据”事件侦听器时,您会收到数据块()。但是对于每个数据块(其大小和结构您事先不知道),您都在调用函数(
getPersonById
)好像您有一行输入电子表格。我预计一些调用会失败,所以我有点惊讶。@sturmer您建议我做什么?不确定。您应该以某种方式确保整行可用。如果您在每个数据事件中打印数据块,您会看到什么?也许当您收到一个包含\n
的事件时,您可以处理这一排是谁?