查询框架内的选择器

Querying a selector that is inside a frame

我正在用 Puppeteer/JS 构建一个简单的抓取工具。

我正在尝试从页面中获取一组段落,html 如 [此图片][1] 中所示。

当我使用 id (#iframeContent) 时,我什么也得不到。当我尝试使用深度指标时;

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

它在尝试点击 > 文档或 > #document 时迷路了。

在 google 上的开发控制台中,如果我手动打开该文档 > html > 正文,我只能通过查询选择器找到,否则甚至 google控制台没有看到 #iframeContent.

您不能跨框架使用选择器。您首先必须找到框架,然后在框架内工作。使用 page.frames() to get a list of all frames of the page and frame.name() 确定您的目标框架。

然后您可以像在页面上一样执行 frame.$$ or 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');