我有一个我需要抓的网站。我无法使用selenium的find_element选项来填写搜索词。我已经尝试使用webdriverwait和iframe的解决方案使用切换到选项但这些不起作用。
链接是'https://www.notredame.edu.au/staff/staff-directory'我使用selenium我还可以使用请求模块吗?我不确定。我也尝试过使用xpath,id和name。
browser = webdriver.Chrome('C:\\Users\\albert.malhotra\\Desktop\\Web Scrapings\\Kentucky State\\chromedriver')
url = 'https://www.notredame.edu.au/staff/staff-directory'
browser.get(url)
time.sleep(10)
WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"tbSimpleSearchName")))
我应该能够使用send_keys方法输入搜索条件并从那里抓取数据。
请尝试以下操作以获得所需的结果。请务必使用任何有效的搜索关键字替换something
。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
URL = "https://www.notredame.edu.au/staff/staff-directory"
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(URL)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"[name='Staff Directory']")))
wait.until(EC.presence_of_element_located((By.ID, "tbSimpleSearchName"))).send_keys("something",Keys.RETURN)
您正在尝试等待IFrame中的元素。
您需要等待IFrame本身,切换到它,然后您可以选择IFrame内部的元素。
WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.Name,"Staff Directory")))
(我没有测试过上面的代码,我认为By.Name
不是正确的选择器,但希望能给你这个想法。