我正在尝试抓取一个具有 Shadow DOM 和 iframe 的网站。正如您在图片中看到的,我找不到 Shadow DOM 的任何选择器,因此我可以访问 iframe。
如何定位 Shadow DOM(CSS 选择器、XPATH 等)?
我试图抓取的页面是:scrape.do
附注我的目标是这样的 iframe:
iframe = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'cf-chl-widget-3kwf9'))
)
您看到的第一页实际上是 Cloudflare Turnstile 验证码,它阻止您到达您真正想要访问的页面。可以使用 SeleniumBase UC 模式轻松绕过它:
from seleniumbase import Driver
driver = Driver(uc=True)
try:
driver.uc_open_with_reconnect("dashboard.scrape.do/login", 4)
driver.uc_gui_click_captcha()
driver.type("#username", "Hello!")
driver.sleep(3)
finally:
driver.quit()
如果在 Linux 上运行,您肯定需要使用
SB()
格式,其中包括更多功能和特殊的虚拟显示:
from seleniumbase import SB
with SB(uc=True) as sb:
url = "dashboard.scrape.do/login"
sb.uc_open_with_reconnect(url, 4)
sb.uc_gui_click_captcha()
sb.type("#username", "Hello!")
sb.sleep(3)