Selenium/Python - 提交表单后提取动态生成的 HTML

2023-11-27

我尝试访问的网页正在使用 JavaScript 动态生成 HTML 表单(这个:https://i.stack.imgur.com/dIDud.jpg)。打字时print(page_source),该表似乎出现在正在输出的 HTML 中。

However,填写输入字段并提交表单后,会出现另一个带有验证码图像的输入字段(如下所示:https://i.stack.imgur.com/ihPe6.jpg)。打字后print(page_source),带有验证码的输入表单似乎没有插入到 HTML 中。

我的问题是:如何使用 Selenium 访问这个动态生成的 HTML,其中包含输入字段和验证码图像?

这是我的代码(另外,在巴斯德宾):

from selenium import webdriver
driver = webdriver.Chrome("/var/chromedriver/chromedriver")

URL = 'http://nap.bg/link?id=104'
driver.get(URL)

input_field = driver.find_element_by_name('ipID')
input_field.send_keys('0000000000')
driver.find_element_by_id('idSubmit').click()
print(driver.page_source)

单击按钮后,页面需要一些时间来加载验证码和其他内容。您需要等待它完成加载。你可以使用 Selenium 来做到这一点显式等待.

这是您可以执行的操作的示例:

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

driver = webdriver.Chrome()
URL = 'http://nap.bg/link?id=104'
driver.get(URL)

input_field = driver.find_element_by_name('ipID')
input_field.send_keys('0000000000')
driver.find_element_by_id('idSubmit').click()

wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.NAME, 'ipResponse')))

print(driver.page_source)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium/Python - 提交表单后提取动态生成的 HTML 的相关文章

随机推荐