用cheerio刮页

问题描述 投票:0回答:1

我目前正在尝试一个项目,我需要将我的在线商店愿望清单的内容推送到数据库,以便在anguar应用程序中显示它。

我目前正在努力的步骤,包括抓取用户当前所在的页面(基本上是他的愿望清单)并将其作为json文件导出(最终直接将其推送到firebase实时数据库中)。

基本上我想导出愿望清单的以下元素: - 产品图片网址 - 产品价格 - 产品标题 - 产品页面网址

当我在其中一些类上运行我的代码时,我要么在我的控制台中得到空值或只有一个值。

此外,我还没有想出如何将控制台中记录的数据保存为json文件。

我随机在线商店做了一些测试。下面是我尝试过的一个例子,在这里我尝试提取产品名称并将其打印到控制台中。

var request = require('request');
var cheerio = require('cheerio');


request('https://www.peek-cloppenburg.de/herren/', timeout = 1000, function (error, response, html) {
  if (!error && response.statusCode == 200) {
    var $ = cheerio.load(html);
    $('p.productTile-brand.qa-product-tile-brand').each(function(i, element){
      var a = $(this).prev();
      console.log(a.text());
    });
  }
});

当我运行它时,我在控制台中得到空白文本。我想在控制台中打印页面的产品名称并将它们保存为json文件。

如果你能帮我解决这个问题,我将不胜感激:-)。

javascript node.js firebase-realtime-database web-scraping cheerio
1个回答
0
投票

在您的具体示例中,问题是,所选元素的文本为空。如果您在浏览器中运行脚本并执行它,它也将返回""。在删除prev()-call之后,名称会在浏览器中列出,所以在你的cheerio代码中也应如此。

console.log($(this).text());
© www.soinside.com 2019 - 2024. All rights reserved.