今天使用playwright抓取某星网站的时候遇到了多层iframe嵌套时无法抓取的情况:
1 2 3 4 5 6 7
| <iframe id="iframe" src="/iframe1/index.html"> <iframe src="/iframe2/index.html"> <iframe id="frame_content"> content <iframe> <iframe> </iframe>
|
解决办法如下:
1 2 3 4 5 6 7 8 9 10 11
| const wrapFrame = page.frameLocator( 'iframe#iframe', );
const taskFrame = wrapFrame.frameLocator( 'iframe[src*="iframe2/index.html"]', );
const finalQuizFrame = taskFrame.frameLocator( 'iframe#frame_content', );
|
当遇到多个iframe时,每个locator的selector一定要明确指向唯一的iframe,否则会抓取失败
读者来信
✎ 投递您的来信