Selenium web scraping:如何在反应性网站上查找元素

2024-05-23 19:51:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,需要从一个网站上获取一些信息,我想让这个过程自动化,但我是一个有技术来实现这一点的乞丐

我在互联网上找到了这个python库(Selenium),我认为它可能是一个解决方案

我成功地完成了第一步(接受cookies,找到“访问”按钮并点击它)。单击“访问”按钮时会出现问题。它显示了一个输入用户和密码的小表单,但我无法使用驱动程序找到它们方法,因此我开始查找html文档中的元素,似乎在单击“接受”按钮之后就注入了此表单

单击按钮后,是否有任何策略来查找用于介绍用户和密码的输入元素

HTML code of the website without having clicked de "Access" button

HTML code after clicking on the "Access" button

多谢各位

网站链接是:https://www.bbva.es/personas/experiencias/bbva-valora/analiza-vivienda.html


Tags: the项目用户信息元素密码表单access
1条回答
网友
1楼 · 发布于 2024-05-23 19:51:58
<iframe class="iframe__base" title="People Login" id="tab-personas-iframe" width="100%" style="max-width: 100%; overflow: hidden; height: 384px;" src="/nimbus/login.html?conf=net/login&amp;http_contactid=04a341b5-c0ce-454a-8854-be6b12299c9a" scrolling="no">Your browser does not support iframes</iframe>

元素位于iframe中

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC


wait=WebDriverWait(driver, 40)
driver.get('https://www.bbva.es/personas/experiencias/bbva-valora/analiza-vivienda.html')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,".cookiesgdpr__acceptbtn.btn__basic.btn__medium-blue"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,".header__actions__item__link.header__actions menu.header__access"))).click()

因此,这里必须切换到iframe,然后查找元素

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"tab-personas-iframe")))
wait.until(EC.element_to_be_clickable((By.XPATH,"//input[@data-testid='login-form-user']"))).send_keys("USER")
wait.until(EC.element_to_be_clickable((By.XPATH,"//input[@data-testid='login-form-password']"))).send_keys("PASSWORD")
wait.until(EC.element_to_be_clickable((By.XPATH,"//input[@data-testid='login-form-submit']"))).click()

要在单击“接受”弹出窗口和“访问”项目后到达所需位置,只需切换帧并发送关键帧

相关问题 更多 >