Цикл через ручку, чтобы получить тексты внутренних элементов - PullRequest
1 голос
/ 28 сентября 2019

Я получил все элементы класса (".col.double.societe.u2d.hasLogo"), я хотел бы зациклить каждый из них для получения текстов класса ('.adresse')

Мой код:

const societeHandles = await page.$$('.col.double.societe.u2d.hasLogo');
for(const societeHandle of societeHandles){
     const adresse = await societeHandle.$eval(".adresse");

Но я получил ошибку запуска Ошибка: не удалось найти соответствующий элемент селектора ".adresse"

, есть класс:

<p class="adresse">
   325 rue Pasteur
   <br><a href="/annuaire/aquitaine/gironde/bordeaux">33200 Bordeaux</a>
   <br><a href="/annuaire/aquitaine/gironde">Gironde</a>
   <br><a href="/annuaire/aquitaine">Aquitaine</a>
 </p>

Могу ли я сделать это?или это синтаксическая ошибка?Спасибо

1 Ответ

1 голос
/ 28 сентября 2019

Кукольник не может найти элемент адреса из-за селектора, который вы выбрали, чтобы найти все из них, возможно, он слишком специфичен.Попробуйте .col.double.societe.

require('puppeteer').launch().then(async browser => {
  const page = await browser.newPage();

  await page.goto('http://www.dollmedia-btp.com/annuaire/aquitaine/gironde/bordeaux');

    const societeHandles = await page.$$('.col.double.societe');

    // Have we got any addresses?
    console.log("Total count: " + societeHandles.length)

    for(const societeHandle of societeHandles){
        const adresse = await societeHandle.$eval(".adresse", el => el.textContent.trim());
        console.log(adresse + "\n")
    }

  await browser.close();
});

Также очень удобно регистрировать, если что-либо найдено во время запроса, поэтому я зарегистрировал количество найденных узлов.

Также обратите внимание на правильноеиспользование handle.$eval: вы передаете функцию a selector, а также function для выполнения в контексте браузера.(В моем примере я просто возвращаю текст из найденных элементов)

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