Как получить информацию в списке ссылок кукловода - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь собрать информацию с Puppeteer с веб-страницы, на которой показана таблица со ссылками.

Когда вы открываете одну ссылку, открывается модальное окно с дополнительной информацией.

Я пытаюсь открыть все ссылки и получить информацию по всем из них.

Это мой код:

const puppeteer = require('puppeteer');
const fs = require('fs');
puppeteer.launch({headless: false}).then(async browser => {
    const page = await browser.newPage();
    await page.goto('https://fcylf.es/competiciones');

    const competitionframe = await page.frames().find(f => f.name() === 'iframecombos');

    const button = await competitionframe.$('#formulario > div.centrado > input.btn.btn-danger.boton_envio.btn-lg');
    button.click();

    let mainframe = await page.frames().find(f => f.name() === 'iframebooox');
    await mainframe.waitForSelector('#datos > ul > li:nth-child(3) > a');
    const div = await mainframe.$('#datos > ul > li:nth-child(3) > a');
    div.click();


    await mainframe.waitForSelector('#clasificacion > .panel > .table-responsive > #resultadosTable > tbody > tr > td > div > a');
    const teams = await mainframe.$$('#clasificacion > .panel > .table-responsive > #resultadosTable > tbody > tr > td > div > a ');

    const results = [];
    for(let team of teams){

        team.click();
        await mainframe.waitForSelector('#myModalLabel');
        const name = await mainframe.$eval('#myModalLabel', name => name.textContent );
        results.push(name);

        const closebt = await mainframe.$('#datos > div.equipoModal.modal.fade.in > div > div > div.modal-footer > button');
        if(closebt!=null){
            closebt.click();
        }
    }
    console.log(results);
});

Но когда я показываю журнал, он показывает всегда один и тот же результат.

1 Ответ

0 голосов
/ 31 октября 2018

Я думаю, вы хотите найти #myModalLabel в div, для которого установлено отображение: block;

Скрытый модал:

<div class="equipoModal modal fade" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true" style="display: none;">

Показанный модал:

<div class="equipoModal modal fade in" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="false" style="display: block;">

Эта строка:

const name = await mainframe.$eval('#myModalLabel', name => name.textContent );

Похоже, что текст захватывает из скрытых модалов, а не из того, что показывает.

Я думаю. Надеюсь, это поможет!

...