首页 > 解决方案 > 使用cheerio从亚马逊获取问题和答案

问题描述

我想从亚马逊获取产品的所有问答,我用它来获取对该产品的所有评论,但我不知道我需要填写的类名是什么,而不是.reviews为了获取客户的问题和答案。

function parseHtml(html) {
  const $ = cheerio.load(html);
  // Load the reviews
  const reviews = $('.review');
  reviews.each((i, review) => {
    // Find the text children
    const textReview = $(review).find('.review-text').text();
    console.log(textReview);
  })
}

标签: node.jscheerioamazon-product-api

解决方案


问答不是页面初始 HTML 的一部分,因此 Cheerio 将无法看到它。当页面中的 Javascript 运行时,它在页面加载后通过 Javascript 延迟加载。

如果你想抓取它(而不是通过官方 API 获取它,如果存在的话),那么你将不得不使用比 Cheerio 更强大的东西。

例如,您可以使用 puppeteer,它使用 Chrome 引擎来实际运行网页。然后,您将拥有一个包含问题的完全填充的网页,您可以提取它们。

或者,您可以对网页中的 Javascript 如何加载数据进行逆向工程,并尝试直接发出该 API 请求。

请注意,该页面中也有几个 iframe,因此您必须确保在正确的 iframe 中进行 DOM 搜索。


推荐阅读