Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用单个Xpath获取web中的第一个元素_Python_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

Python 使用单个Xpath获取web中的第一个元素

Python 使用单个Xpath获取web中的第一个元素,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我正在运行一个小的Python Selenium脚本,我想从这个站点上的第一个元素访问属性:。每隔几分钟,第一个元素就会不同,因此具有不同的Xpath标识符。 第一个元素具有不同的id/xpath,在任何时候访问它的可能性是什么?我指的第一个结果 提前多谢 在过去的15分钟里,我一直关注着这个网站,但对我来说,这个页面没有改变 尽管如此,我还是尝试使用BS4(您可以使用Selenium当前的浏览器会话填充BS4)来刮取数据,在BS4中,它应该始终首先返回第一个元素 from bs4 import

我正在运行一个小的Python Selenium脚本,我想从这个站点上的第一个元素访问属性:。每隔几分钟,第一个元素就会不同,因此具有不同的Xpath标识符。
第一个元素具有不同的id/xpath,在任何时候访问它的可能性是什么?我指的第一个结果


提前多谢

在过去的15分钟里,我一直关注着这个网站,但对我来说,这个页面没有改变

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

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)
当然,这只是为了价格,但您可以对其他元素应用相同的逻辑。

要打印第一个标题,您必须诱导WebDriverWait以获得所需的
元素的可见性()
,并且您可以使用以下任一选项:

  • 使用
    CSS\u选择器

    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]多样的Gravitrax Erweiterungen günstig

  • [Mediamarkt@Ebay.de]多样的Gravitrax Erweiterungen günstig
根据文件:

  • 方法
    获取元素的给定属性或属性。

  • 属性返回元素的文本。


你说的第一个元素是什么意思???你应该提到你要找的元素??你的代码试用版在哪里???请包括你当前的脚本。我指的第一个结果