【发布时间】:2018-03-23 12:21:35
【问题描述】:
我开始学习 node.js,我正在尝试抓取一些网站数据。 这是我的代码。
request(url, function (error, response, body) {
if (!error) {
var $ = cheerio.load(body,{
ignoreWhitespace: false
});
var produsGasit =[];
$('body').each(function(i, elem){
produsGasit[i]={};
//produsGasit[i]['name'] = $(elem).find('.fn').text();
produsGasit[i]['produs'] = $(elem).find('.product').text();
produsGasit[i]['reducere'] = $(elem).find('.product-badge').text();
produsGasit[i]['linkProdus'] = $(elem).find('.product_link').attr('href');
//imagineProdus = $(elem).find('.ProductImage').text();
produsGasit[i]['descriereProdus'] = $(elem).find('.ProductDetails').text();
produsGasit[i]['pretProdus'] = $(elem).find('.price').text();
//console.log(name+"±"+produs+"±"+reducere+"+"+linkProdus+"+"+descriereProdus+"+"+pretProdus);
console.log(produsGasit[i]);
fs.appendFile('produse.json', JSON.stringify(produsGasit,null,8), function (err) {
if (err) throw err;
console.log('Saved!');
});
}
)}
})
我想将获得的信息写入对象。 我的问题是,当我运行代码时,它会根据我用来识别数据的类对所有数据进行分组。例如,产品的所有价格都在一个 key:value 字段中。 我想要做的是获取我在页面上找到的每个产品的标题、价格,并在包含所有数据的 json 文件中使用该数据创建单独的对象。
【问题讨论】:
-
您希望为每个单独的产品选择最近的包含元素,而不是选择“body”。如果您不介意请求哪个 URL?
-
sports.woomie.ro 开头没有“www”
-
这里有一些东西可以帮助你学习。这个网站有很多很棒的教程。这是一个关于抓取的:scotch.io/tutorials/scraping-the-web-with-node-js
标签: javascript json node.js web-scraping