我正在用Puppeteer / JS构建一个简单的刮板。
我正在尝试从页面上获取段落的数组,并且html如[此图片] [1]中所示。
使用ID(#iframeContent
)时,我什么也没得到。这样,当我尝试使用深度指标时;
await page.$eval('#bookDesc_iframe_wrapper > iframe')
它丢失了试图点击> document或> #document的轨道。
在Google的开发人员控制台中时,我只能通过查询选择器找到我是否手动打开了该文档> html>正文,否则,即使是Google控制台也看不到#iframeContent
。
答案 0 :(得分: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');