我尝试访问的网页是使用JavaScript动态生成HTML表单(这一个:https://imgur.com/a/rhmXB)。键入print(page_source)
时,表格似乎出现在输出的HTML中。
但是,在填写输入字段并提交表单后,会出现另一个带有CAPTCHA图像的输入字段(如下所示:https://imgur.com/a/xVfBS)。输入print(page_source)
后,带有CAPTCHA的输入表单似乎不会插入HTML中。
我的问题是:如何使用Selenium访问此动态生成的HTML,其中包含输入字段和CAPTCHA图像?
这是我的代码(同样,在pastebin中:https://pastebin.com/ULSsmbZq):
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)
答案 0 :(得分:3)
单击该按钮后,该页面需要一些时间来加载CAPTCHA和其他内容。您需要等待它才能完成加载。你可以使用Selenium的explicit waits。
来做到这一点这是你可以做的一个例子:
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)