Очистить текст из iframe

Как бы я вычищал текст из iframe с помощью puppeteer.

В качестве простого воспроизводимого примера соскребите This is a paragraph из iframe этого URL-адреса.

https://www.w3schools.com/js/tryit.asp?filename=tryjs_events


person Alex    schedule 26.11.2017    source источник


Ответы (2)


Чтобы очистить текст iframe в puppeteer, вы можете использовать page.evaluate puppeteer для оценки JavaScript в контексте страницы, которая возвращает содержимое iframe.

Шаги для этого:

  1. Возьмите элемент iframe
  2. Получите объект document iframe.
  3. Используйте объект document для чтения HTML-кода iframe

Я написал эту программу, которая получает This is a paragraph по предоставленной вами :

const puppeteer = require("puppeteer");

(async () => {

    const browser = await puppeteer.launch();

    const page = await browser.newPage();
    await page.goto('https://www.w3schools.com/js/tryit.asp?filename=tryjs_events');

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

        const iframe = document.getElementById("iframeResult");

        // grab iframe's document object
        const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

        const iframeP = iframeDoc.getElementById("demo");

        return iframeP.innerHTML;
    });

    console.log(iframeParagraph); // prints "This is a paragraph"

    await browser.close();

})();
person Christian Santos    schedule 27.11.2017

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

person Gregor Ojstersek    schedule 04.01.2019