Скребковый стол с кукольником - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть следующий скрипт с puppeter, который работает правильно, этот код извлекает всю информацию о таблице.

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  const tableRows = await page.$$('table > tbody tr');

    await page.goto("https://www.mismarcadores.com/baloncesto/espana/liga-endesa/partidos/");

    const time = await page.evaluate(() => {

        const tables = Array.from(document.querySelectorAll('table tr .time'));
        return tables.map(table => table.textContent)
     });

    const teamHome = await page.evaluate(() => {
        const tables = Array.from(document.querySelectorAll('table tr .team-home'));
        return tables.map(table => table.textContent)
     });

     const teamAway = await page.evaluate(() => {
        const tables = Array.from(document.querySelectorAll('table tr .team-away'));
        return tables.map(table => table.textContent)
     });


     for (let i = 0; i < time.length; i++) {
        console.log(time[i]);
        console.log(teamHome[i]);
        console.log(teamAway[i]);
     }  

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

Теперь я пытаюсь создать это лучше и у меня есть следующий код.

(async () => {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
    await page.goto("https://www.mismarcadores.com/baloncesto/espana/liga-endesa/partidos/");
    console.log("started evalating");
    var data = await page.evaluate(() => {
      Array.from(
        document.querySelectorAll('table tr')
      ).map(row => {
        return {
          time: row.querySelector(".time"),
          teamHome: row.querySelector(".team-home"),
          teamAway: row.querySelector(".team-away")
        };
      });
    });
  console.log(data);
})();

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

Результатом будет передача первого скрипта второму скрипту.

Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 02 марта 2019

Вам нужно указать tr элементов больше (например, добавив .stage-scheduled class) и вернуть .textContent свойства вместо самих элементов.Попробуйте это:

    var data = await page.evaluate(() => {
      return Array.from(
        document.querySelectorAll('table tr.stage-scheduled')
      ).map(row => {
        return {
          time: row.querySelector(".time").textContent,
          teamHome: row.querySelector(".team-home").textContent,
          teamAway: row.querySelector(".team-away").textContent,
        };
      });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...