从 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=]的内容。
这样做的步骤是:
- 抓住
iframe
元素
- 获取
iframe
的 document
对象。
- 使用
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.
我如何使用 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=]的内容。
这样做的步骤是:
- 抓住
iframe
元素 - 获取
iframe
的document
对象。 - 使用
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.