查询框架内的选择器

问题描述 投票:1回答:1

我正在用Puppeteer / JS构建一个简单的刮刀。

我试图从页面中获取一个段落数组,html如[本图] [1]中所示。

当我使用id(#iframeContent)时,我什么都没得到。当我尝试使用深度指标时,就这样;

await page.$eval('#bookDesc_iframe_wrapper > iframe')

它失去了试图点击>文件或> #document的跟踪。

当在google上的开发控制台中,我只能通过查询选择器找到我是否已经离开并手动打开该文档> html> body,否则即使google console也看不到#iframeContent

javascript node.js web-scraping puppeteer dom-traversal
1个回答
1
投票

您不能跨框架使用选择器。首先必须找到框架,然后在框架内工作。使用page.frames()获取页面的所有帧列表和frame.name()以识别您的目标帧。

然后,您可以像在页面上一样执行frame.$$frame.evaluate等函数。

代码可能如下所示:

const frames = await page.frames();
const iframe = frames.find(f => f.name() === 'bookDesc_iframe'); // name or id for the frame

const paragraphs = await iframe.$$('p');
© www.soinside.com 2019 - 2024. All rights reserved.