Кукольник, объединяющий переменные объекта - PullRequest
0 голосов
/ 14 апреля 2020

Я использую кукловодов для соскоба. Код, который у меня есть в настоящее время, захватывает заголовок каждого продукта на странице и сохраняет его в переменной объекта. Вот код, который у меня есть в настоящее время.

const puppeteer = require("puppeteer");

(async () => {
  let movieURL = "https://www.walmart.com/search/?query=&cat_id=91083";

  let products = [];
  let browser = await puppeteer.launch({ headless: true });
  let page = await browser.newPage();

  await page.goto(movieURL, { waitUntil: "networkidle2" });

  let data = await page.evaluate(() => {
    products = [
      ...document.querySelectorAll("a.product-title-link"),
    ].map((a) => ({ Product: { Title: a.innerText } }));

    return {
        products,
    };
  });

  console.log(JSON.stringify(data.products[0]));

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

Когда я запускаю код, он показывает мне это.

{"Product":{"Title":"SQ Non Chlorinated Brake Parts Cleaner"}}

Желаемые результаты этого кода будут для него, чтобы показать мне title и price .

{"Product":{"Title":"SQ Non Chlorinated Brake Parts Cleaner", "Price":"12"}}

Как мне сделать так, чтобы title * и ** price объединялись в json. Вот некоторые вещи, которые я сейчас пробовал.

  let data = await page.evaluate(() => {
    productName = [
      ...document.querySelectorAll("a.product-title-link"),
    ].map((a) => ({ Product: { Title: a.innerText } }));

    productPrice = [
        ...document.querySelectorAll("price display-inline-block"),
      ].map((a) => ({ Product: { Price: a.innerText } }));

    return {
      productName,
      productPrice
    };
  });

Этот код выше не работает. Любая помощь будет оценена. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...