试图构建一些抓取网页的漫游器,并且无法使用我知道的任何方法访问该网页上的元素。
我在做什么错?:)
尝试使用所有find_elemenet_by ...来获取此元素,但一无所获。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
url = 'https://www.elal.com/he/Pages/Bid2Fly.aspx#bidflyer/auctions/'
driver = webdriver.Chrome
driver.get(url)
wait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.bid-button")))
print(driver.find_elements_by_class_name("half").text)
尝试以链接为起点,然后抓取数据。
答案 0 :(得分:2)
您要使其自动化的所有网站内容都在iframes中,因此您需要调用WebDriver.switch_to()函数才能将上下文更改为所需的iframe,然后再尝试定位元素
driver.switch_to.frame("frame")
WebDriver.find_elements_by_classname返回List个Web元素,此外,这些元素没有text属性,因此您应该是:
示例代码(为了更好的可读性和性能,我将CSS定位器更改为XPath)
url = 'https://www.elal.com/he/Pages/Bid2Fly.aspx#bidflyer/auctions/'
driver.get(url)
driver.switch_to.frame("frame")
wait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.bid-button")))
for element in driver.find_elements_by_xpath("//div[@class='half']"):
print(element.get_attribute("innerText"))
driver.quit()
答案 1 :(得分:0)
您是否尝试过将元素存储在变量中?
like- var=driver.find_elements_by_class_name("div.half")
如果类名如您所描述的那样并且不是复合名称,我认为应该这样做。