我正在用Puppeteer / JS构建一个简单的刮刀。
我试图从页面中获取一个段落数组,html如[本图] [1]中所示。
当我使用id(#iframeContent
)时,我什么都没得到。当我尝试使用深度指标时,就这样;
await page.$eval('#bookDesc_iframe_wrapper > iframe')
它失去了试图点击>文件或> #document的跟踪。
当在google上的开发控制台中,我只能通过查询选择器找到我是否已经离开并手动打开该文档> html> body,否则即使google console也看不到#iframeContent
。
您不能跨框架使用选择器。首先必须找到框架,然后在框架内工作。使用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');