我已经在StackOverflow/谷歌上搜索了很久,但是似乎无法解决。
我正在爬取某个URL页面的社交媒体链接,并且该函数返回一个包含URL列表的对象。
当我尝试将这些数据写入不同的文件时,它会输出到文件中显示为[object Object]
,而不是预期的:[ 'https://twitter.com/#!/101Cookbooks', 'http://www.facebook.com/101cookbooks'],就像在使用console.log()
时看到的那样。
这是我的一次尝试,用Node读取和写入文件,尝试读取每一行(即URL),然后通过函数调用request(line, gotHTML)
输入:
fs.readFileSync('./urls.txt').toString().split('\n').forEach(function (line){
console.log(line);
var obj = request(line, gotHTML);
console.log(obj);
fs.writeFileSync('./data.json', obj , 'utf-8');
});
供参考 -- gotHTML
函数:
function gotHTML(err, resp, html){
var social_ids = [];
if(err){
return console.log(err);
} else if (resp.statusCode === 200){
var parsedHTML = $.load(html);
parsedHTML('a').map(function(i, link){
var href = $(link).attr('href');
for(var i=0; i<socialurls.length; i++){
if(socialurls[i].test(href) && social_ids.indexOf(href) < 0 ) {
social_ids.push(href);
};
};
})
};
return social_ids;
};
[object Object]
是一个对象的toString
,如果想要该对象的表示,请使用JSON.stringify
。 - elclanrsJSON.stringify
。对于数组,它是安全的,但是当对象存在循环引用时,它会失败(参见此主题)。util
模块可以处理循环引用。 - Joseph Yaduvanshi