如何使用Selenium切换至Iframe进行数据爬取?
解决Selenium无法切换到指定Iframe的问题
针对你遇到的这个iframe,下面是几种可靠的切换方法,核心要确保iframe加载完成后再操作:
等待iframe加载完成再切换
硬编码等待时间不稳定,推荐用显式等待确保iframe可用后再切换:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待iframe加载并自动切换,超时时间设为10秒 WebDriverWait(driver, 10).until( EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe[src="https://direct.argusmedia.com/integration/price/pricedata"]')) )通过WebElement定位后切换
先定位到iframe元素再切换,适合需要对元素做额外判断的场景:iframe_element = driver.find_element(By.CSS_SELECTOR, 'iframe[src="https://direct.argusmedia.com/integration/price/pricedata"]') driver.switch_to.frame(iframe_element)通过索引切换(备选方案)
如果页面中只有这一个iframe,或是它是第一个iframe,可直接用索引快速切换:driver.switch_to.frame(0) # 索引从0开始计数
注意事项
- 爬取完iframe内的数据后,记得切回主页面,避免后续操作出错:
driver.switch_to.default_content() - 若页面存在多层嵌套iframe,需要逐层切换进入,后续操作完成后也要逐层切回。
内容的提问来源于stack exchange,提问作者mr robot
相关产品推荐
相关产品推荐

