我有一个需要抓取的网站。我无法使用带有硒的find_element选项来填写搜索词。我尝试使用webdriverwait和iframe的解决方案(使用切换到选项),但这些方法不起作用。
链接为“ https://www.notredame.edu.au/staff/staff-directory” 我正在使用硒,也可以使用请求模块吗?我不确定。我也尝试过使用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方法输入搜索条件并从那里刮取数据。
答案 0 :(得分:0)
您正在尝试等待IFrame中的元素。
您需要等待IFrame本身,切换到它,然后才能在IFrame中选择元素。
WebDriverWait(browser, 20).until(EC.frame_to_be_available_and_switch_to_it((By.Name,"Staff Directory")))
(我尚未测试以上代码,并且我不认为By.Name
是正确的选择器,但希望可以为您提供这个想法。
答案 1 :(得分:0)
请尝试以下操作以获得所需的结果。确保用任何有效的搜索关键字替换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)