我正在使用nodejs
withcheerio
从网站上抓取数据,并从中创建一个对象。然后,它需要获取该对象并在函数中使用它。
问题是,我的对象正在创建,但在cheerio
可以正确解析数据并将其放入对象之前,下一个函数已经在运行。这是我的代码:
function getInfo(obj, link){
request(link, function(err, resp, body) {
if (err) {
console.log("Uh-oh: " + err);
throw err;
}
$ = cheerio.load(body);
function createProduct(obj, callback){
var product = {
name : $('#name').text(),
gender : obj.gender,
infoLink : link,
designer : $('.label').first().text(),
price : $('#price').first().text(),
description : $('.description').text(),
date : new Date()
}
product.systemName = (function(){
return product.name.replace(/\s+/g, ' ');
}());
callback(product);
}
createProduct(obj, function(product){
lookUp(product);
});
我在这里得到了好坏参半的结果。在正确输入所有详细信息的情况下,一些product
对象被发送到函数中。有些缺少描述,有些缺少每个cheerio
填充的内容。其他人有一些cheerio
抓取的内容,但缺少某些位。gender
和属性总是存在的date
,并且属性存在,但它们只是空白(例如product.name
返回""
而不是未定义)。
我检查了每个违规链接,所有页面都包含要抓取的正确选择器。
product
填充对象后,如何将回调设置为 ONLY 函数?