【问题标题】:Scrape page with cheerio用cheerio 刮页
【发布时间】:2019-04-11 22:10:31
【问题描述】:

我目前正在试验一个项目,我需要将我的在线商店愿望清单的内容推送到数据库,以便在 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】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多