【问题标题】:Can't find any element on selenium on some wepage with python使用python在某些网页上找不到硒上的任何元素
【发布时间】:2019-06-25 20:05:22
【问题描述】:

试图构建一些爬取网页的机器人,并且无法使用我知道的任何方法访问此网页上的元素。

我做错了什么?:)

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

尝试获取链接作为开始,然后抓取数据。

【问题讨论】:

  • 它在说什么?输出/错误是什么?
  • 它没有找到它们。如果它是“按元素查找” - 它会返回空列表。如果它“按元素”返回我这个错误消息:selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素
  • 有关如何使用 Selenium 的一些见解,请访问 this page 。我在这里使用了每种类型的find_elements_by

标签: python selenium element


【解决方案1】:
  1. 您尝试自动化的网站的所有内容都在 iframes 中,因此您需要调用 WebDriver.switch_to() 函数,以便在尝试定位元素之前将上下文更改为所需的 iframe

    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()
    

【讨论】:

    【解决方案2】:

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

    喜欢-var=driver.find_elements_by_class_name("div.half")

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

    【讨论】:

    • 感谢您的回答。不幸的是,它不是我正在寻找的解决方案。我尝试了一些方法来指向元素。它只是其中之一。在这种情况下,它会返回一个空列表。 (我认为在这种情况下我没有弄错“类名”和“css 选择器”等)
    • 使用自动完成库。它将帮助您解决这些错误。就像您要与对象一起使用的方法是否适用。
    • 在使用find_element_byfind_elements_by 时要小心。一个返回它可以找到的第一个元素,而另一个返回所有元素的列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多