我正在使用 Puppeteer/JS 构建一个简单的爬虫。
我正在尝试从页面中获取段落数组,而 html 如 [此图片][1] 中所示。
当我使用 id (#iframeContent
) 时,我什么也得不到。当我尝试使用深度指标时;
await page.$eval('#bookDesc_iframe_wrapper > iframe')
它在尝试点击 > document 或 > #document 时迷路了。
在 google 的开发控制台中,如果我手动打开该文档 > html > body,我只能通过查询选择器找到,否则即使 google 控制台也看不到 #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');
关于javascript - 查询框架内的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55444138/