📜  使用 puppeteer 从亚马逊抓取 - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:33.273000             🧑  作者: Mango

使用 Puppeteer 从亚马逊抓取 - Javascript

Puppeteer 是一个 Node.js 库,它提供了一个高级 API 来控制 Chrome 或 Chromium。通过使用 Puppeteer,我们可以模拟用户在浏览器中的操作,如点击、滚动、输入等,以及从网页中抓取数据。

在本文中,我们将介绍如何使用 Puppeteer 从亚马逊网站上抓取商品信息,包括商品名称、价格、评论数等。

安装 Puppeteer

首先,我们需要安装 Puppeteer。可以通过以下命令在终端中进行安装:

npm install puppeteer
访问页面

接下来,我们需要在 Puppeteer 中打开亚马逊网站。可以使用以下代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.amazon.com/');
  // 在这里进行后续操作
  await browser.close();
})();

在上面的代码中,我们使用 await 等待浏览器启动并打开页面。browser.newPage() 会创建一个新页面对象,通过 page.goto() 可以访问指定的页面。

抓取商品信息

一旦我们打开了亚马逊网站,我们可以开始抓取商品信息了。下面展示了如何获取商品名称、价格和评论数:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.amazon.com/');

  // 等待页面加载完成
  await page.waitForSelector('#twotabsearchtextbox');

  // 在搜索框中输入关键词
  await page.type('#twotabsearchtextbox', 'laptop');

  // 点击搜索按钮
  await page.click('#nav-search-submit-button');

  // 等待页面加载完成
  await page.waitForSelector('.s-result-item');

  // 获取商品列表
  const items = await page.$$('.s-result-item');
  for(let item of items) {
    // 获取商品名称
    const title = await item.$eval('.a-link-normal', node => node.innerText);

    // 获取商品价格
    const price = await item.$eval('.a-price-whole', node => node.innerText);

    // 获取评论数
    const ratingCount = await item.$eval('.s-item-rating', node => {
      const rating = node.getAttribute('aria-label');
      return rating ? rating.replace(/[^0-9]/g, '') : 0;
    });

    console.log({
      title,
      price,
      ratingCount
    });
  }

  await browser.close();
})();

在上述代码中,我们首先使用 page.waitForSelector() 等待搜索框加载完成,然后使用 page.type() 在搜索框中输入关键词,使用 page.click() 点击搜索按钮。接着,使用 page.waitForSelector() 等待商品列表加载完毕,使用 page.$$() 获取商品列表。然后,遍历商品列表,通过 item.$eval() 获取商品名称、价格和评论数,存储在对象中并输出到控制台。

总结

通过使用 Puppeteer,我们可以方便地从网页中抓取数据。比如,我们可以使用 Puppeteer 从亚马逊网站上抓取商品信息。在这篇文章中,我们介绍了如何使用 Puppeteer 打开网页、输入关键词、点击搜索按钮、获取商品列表以及从商品列表中获取商品名称、价格和评论数。