从 iframe 中抓取文本

Scrape Text From Iframe

我如何使用 puppeteer 从 iframe 中抓取文本。

作为一个简单的可重现示例,从 url

的 iframe 中抓取 This is a paragraph

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

要在 puppeteer 中抓取 iframe 的文本,您可以使用 puppeteer 的 page.evaluate 在 returns [=] 页面的上下文中评估 JavaScript 11=]的内容。

这样做的步骤是:

  1. 抓住 iframe 元素
  2. 获取 iframedocument 对象。
  3. 使用document对象读取iframe的HTML

我写了这个从 link you provided:

抓取 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();

})();

我知道这个问题已经有了答案,但如果有人想采用另一种方法,您可以从 iframe 中获取内容并使用 cheerio 遍历元素并获取任何元素的文本想要 - you can find it here.