Заменить недостающий элемент в результатах чистки Кукольника - PullRequest
0 голосов
/ 02 июня 2019

Я использую скрипт для рекурсивной очистки данных с помощью Puppeteer.Он работает правильно, но иногда элемент отсутствует в структуре страницы, и в этот момент скрипт вылетает.

Я бы хотел установить условие, если элемент отсутствует.Я пробовал несколько способов добавить условие, но безуспешно, например if / else, чтобы проверить, существует ли элемент.Здесь есть интересная тема: Продолжить с нулевым значением результата (Nodejs, Puppeteer) , но я не могу воспроизвести решение в моей структуре Array.from.Есть ли способ достичь этого?Любые указания для начала приветствуются.

Вот часть скрипта, где я запрашиваю элементы:

  const results = await page.evaluate(() => 
          Array.from(document.querySelectorAll('article.main-wrap section'), value => ({
             name: value.querySelector('h1.title').innerText.trim(),
             frame: value.querySelector('ul li:nth-child(3)').innerText.trim(),
             // more elements to scrap
          }))
    );

, когда ожидаемый элемент отсутствует в структуре страницы, я хотел бычтобы заменить значение в ключе, пара значений должна выглядеть примерно как «ноль».Возможно, в Array.from можно использовать какой-то троичный синтаксис, но я ничего не могу найти.

1 Ответ

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

Вы можете использовать троичный оператор, чтобы проверить, возвращает ли querySelector истинное значение:

const results = await page.evaluate(() => 
    Array.from(document.querySelectorAll('article.main-wrap section'), value => ({
        name: value.querySelector('h1.title') 
            ? value.querySelector('h1.title').innerText.trim()
            : 'falsy value',
        frame: value.querySelector('ul li:nth-child(3)') 
            ? value.querySelector('ul li:nth-child(3)').innerText.trim()
            : 'falsy value',
    }))
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...