Селектор запросов с кукловодом возвращает пустой массив - PullRequest
0 голосов
/ 16 июня 2019

У меня написан короткий скребок, чтобы вытащить некоторые заголовки со страницы, используя Puppeteer. Хотя я могу очищать отдельные элементы, например, одинокий h2, попытка очистить и вернуть множество элементов не удалась.

В основном я пытался убедиться, что мой селектор запросов даже работает, я могу запустить Array.from(document.querySelectorAll('div.landscape h3.title')).map(partner => partner.textContent) в моих инструментах Chrome dev и получить нужный мне массив, но запуск его в моем скрипте возвращает пустой массив []. Как указывалось ранее, использование только одиночного querySelect ('h2'), кажется, работает нормально.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://marketingplatform.google.com/about/partners/find-a-partner');

  const titlesArray = await page.evaluate(
    () => Array.from(document.querySelectorAll('div.landscape h3.title')).map(partner => partner.textContent)
  );


  console.log(titlesArray);


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

Кажется, что никаких сообщений об ошибках не возникает, просто консольный журнал пустого массива.

1 Ответ

1 голос
/ 16 июня 2019

Когда страница загружается впервые, она показывает текст «Загрузка» и перенаправляет / загружает данные оттуда.

Вам нужно подождать, пока элемент появится в DOM. Вот как может выглядеть код:

await page.goto('https://marketingplatform.google.com/about/partners/find-a-partner');
await page.waitFor('div.landscape h3.title'); // <-- add this line
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...