用cheerio刮页

时间:2019-04-11 05:56:59

标签: javascript node.js firebase-realtime-database web-scraping cheerio

我目前正在尝试一个项目,该项目需要将我的网上商店愿望清单的内容推送到数据库中,以便在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文件。

如果您能帮助我解决此问题的解决方案,我将不胜感激:-)。

1 个答案:

答案 0 :(得分:0)

在您的具体示例中,问题是所选元素的文本为空。如果您在浏览器中运行脚本并执行该脚本,该脚本也会返回""。挂断prev()呼叫后,名称会在浏览器中列出,因此您的cheerio代码中也应列出。

console.log($(this).text());