【问题标题】:Get the first element in web with individual Xpath [duplicate]使用单独的 Xpath 获取 Web 中的第一个元素 [重复]
【发布时间】:2019-08-31 16:24:50
【问题描述】:

我正在运行一个小的 Python Selenium 脚本,我想从该站点上的第一个元素访问属性:https://www.mydealz.de/gruppe/spielzeug。每隔几分钟,第一个元素就会不同,因此具有不同的 Xpath 标识符。 第一个元素始终访问的可能性是什么,它具有不同的 id's/Xpaths?我的意思是第一个结果。

提前非常感谢!

【问题讨论】:

  • 第一个元素是什么意思???你应该提到你所追求的元素??你的代码试验在哪里???
  • 请包含您当前的脚本。
  • 我的意思是第一个结果

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

过去 15 分钟我一直在关注该网站,但对我来说页面没有改变。

尽管如此,我尝试使用 BS4(您可以使用 Selenium 的当前浏览器会话填充)来抓取数据,它应该始终首先返回第一个元素。

from bs4 import BeautifulSoup
import requests

data = requests.get('https://www.mydealz.de/gruppe/spielzeug')
soup = BeautifulSoup(data.text, "html.parser")
price_info = soup.select(".cept-tp")

for element in price_info:
    for child in element:
        print(child)

当然这只是为了价格,但您可以对其他元素应用相同的逻辑。

【讨论】:

    【解决方案2】:

    要打印第一个 title,您必须为所需的visibility_of_element_located() 诱导 WebDriverWait,您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.threadGrid div.threadGrid-title.js-contextual-message-placeholder>strong.thread-title>a"))).get_attribute("title"))
      
    • 使用XPATH

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='threadGrid']//div[@class='threadGrid-title js-contextual-message-placeholder']/strong[@class='thread-title']/a"))).text)
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      
    • 两个背靠背执行的控制台输出:

    • [Mediamarkt @Ebay.de] diverse Gravitrax Erweiterungen günstig!

    • [Mediamarkt @Ebay.de] diverse Gravitrax Erweiterungen günstig!

    根据文档:

    • get_attribute(name) 方法Gets the given attribute or property of the element.

    • text 属性返回The text of the element.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-17
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      相关资源
      最近更新 更多