Получить td dataname href со страницы кукловода тела оценить - PullRequest
2 голосов
/ 11 июля 2020
<tbody>
  <tr>
    <td data-name="Name"><a href="https://test.ca">test</a></td>
    <td data-name="Active Ingredients"><a href="http://test1.ca">test13</a></td>
    <td data-name="Strength"><a href="http://test3.ca">20mg</a></td>
    <td data-name="Picture">
      <a href="">
        <img src="" />
      </a>
    </td>
  </tr>
</tbody>

У меня есть следующее html.

Как я могу получить все tdata-name с именем значения и его значением href через страницу кукловода оценивать

Любая помощь очень ценится .

1 Ответ

1 голос
/ 11 июля 2020

Вариант:

'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch();
    const [page] = await browser.pages();

    const html = `
      <!doctype html>
      <html>
        <head><meta charset='UTF-8'><title>Test</title></head>
        <body>
          <table><tbody>
            <tr>
              <td data-name="Name"><a href="https://test.ca">test</a></td>
              <td data-name="Active Ingredients"><a href="http://test1.ca">test13</a></td>
              <td data-name="Strength"><a href="http://test3.ca">20mg</a></td>
              <td data-name="Picture"><a href=""><img src=""></a>
          </tbody></table>
        </body>
      </html>`;

    await page.goto(`data:text/html,${html}`);

    const data = await page.evaluate(() => Array.from(
      document.querySelectorAll('td'),
      td => ({ [td.dataset.name]: td.querySelector('a[href]').href }),
    ));

    console.log(data);

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();

Вывод:

[
  { Name: 'https://test.ca/' },
  { 'Active Ingredients': 'http://test1.ca/' },
  { Strength: 'http://test3.ca/' },
  { Picture: '' }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...