使用python在某些网页上找不到硒中的任何元素

时间:2019-06-25 20:05:22

标签: python selenium element

试图构建一些抓取网页的漫游器,并且无法使用我知道的任何方法访问该网页上的元素。

我在做什么错?:)

尝试使用所有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)

尝试以链接为起点,然后抓取数据。

2 个答案:

答案 0 :(得分:2)

  1. 您要使其自动化的所有网站内容都在iframes中,因此您需要调用WebDriver.switch_to()函数才能将上下文更改为所需的iframe,然后再尝试定位元素

    enter image description here

    driver.switch_to.frame("frame")
    
  2. 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()
    

    enter image description here

答案 1 :(得分:0)

您是否尝试过将元素存储在变量中?

like- var=driver.find_elements_by_class_name("div.half")

如果类名如您所描述的那样并且不是复合名称,我认为应该这样做。