Как перебрать все <li>, чтобы получить текстовое содержание от дескриптора до <ul>в Puppeteer JS? - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть дескриптор <ul> на веб-странице, которую я очищаю с помощью Puppeteer, вот так:

const [detailElm] = await page.$x(
      "/html/body/div[2]/table/tbody/tr/td/div/ul"
    );

В этом <ul> есть 7 <li>, которые мне нужны для извлечения текста от. Я пробовал это:

const [detailElm] = await page.$x(
      "/html/body/div[2]/table/tbody/tr/td/div/ul"
    );
const list = await detailElm.$x("li");

//this line prints 7 so I know that it is identifying the 7 <li>
console.log(list.length); 

//this doesn't work
for(line in list){
  console.log(list[line].innerText);
}

Какой будет правильный способ перебирать вложенные элементы <li> вместо для l oop?

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

ElementHandle не имеет innerHTML свойства. Вам нужно либо использовать getProperty:

for (let line of list)
    console.log(await (await line.getProperty('innerHTML')).jsonValue());

или передать элемент в evaluate

for (let line of list)
    console.log(await page.evaluate(el => el.innerHTML, line);

Имейте в виду, что forEach является синхронным так что придерживайтесь простого для l oop.

0 голосов
/ 09 февраля 2020

Почему бы не просто go с оператором массива forEach?

 list.forEach(line => console.log(line))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...