Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
使用selenium提取网站的面包屑_Selenium_Xpath_Web Scraping_Css Selectors_Webdriverwait - Fatal编程技术网

使用selenium提取网站的面包屑

使用selenium提取网站的面包屑,selenium,xpath,web-scraping,css-selectors,webdriverwait,Selenium,Xpath,Web Scraping,Css Selectors,Webdriverwait,我需要提取此网站的面包屑: 我试图检查元素并复制xpath,但它没有提取它 从selenium导入webdriver driver=webdriver.Firefox() 司机,上车https://www.woolworths.com.au/Shop/Browse/drinks/cordials-juices-iced-teas/iced-teas') 驱动程序。通过xpath查找元素('/*[@id=“center panel”]/div/wow tile list with content/

我需要提取此网站的面包屑:

我试图检查元素并复制xpath,但它没有提取它

从selenium导入webdriver
driver=webdriver.Firefox()
司机,上车https://www.woolworths.com.au/Shop/Browse/drinks/cordials-juices-iced-teas/iced-teas')
驱动程序。通过xpath查找元素('/*[@id=“center panel”]/div/wow tile list with content/ng transclude/wow browse tile list/wow tile list/div/div/div[1]/div[1]/wow breadcrumbs/div/ul/li[4]/span/span')
驱动程序。通过css选择器查找元素(“#中心面板>div>包含内容的wow平铺列表>ng transclude>wow浏览平铺列表>wow平铺列表>div>div.tileList>div.tileList-headerContainer>wow面包屑>div>ul>li:n个孩子(4)>跨度>跨度”)

如何继续?

您试图刮取的页面是用Angular编写的,这意味着大多数
DOM元素都是由JavaScript AJAX代码动态加载的,一旦加载页面,它们就不存在了。(
driver.get
函数返回)

您应该使用
until
函数来定位这些元素

下面是使用您提供的XPATH的工作示例:

driver.get('https://www.woolworths.com.au/Shop/Browse/drinks/cordials-juices-iced-teas/iced-teas')
try:
    element = WebDriverWait(driver, 1).until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="center-panel"]/div/wow-tile-list-with-content/ng-transclude/wow-browse-tile-list/wow-tile-list/div/div[1]/div[1]/wow-breadcrumbs/div/ul/li[4]/span/span'))
    )
    print(element.text) ' this outputs Iced Teas
except TimeoutException:
    print("Timeout")

要打印网站的面包屑:您必须诱导WebDriverWait,以获得所需的
元素的可见性\u located()
,并且您可以使用以下任一方法:

  • 使用
    CSS\u选择器
    get\u属性()
    方法:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "ul.breadcrumbs-linkList li:nth-child(4) span span"))).get_attribute("innerHTML"))
    
  • 使用
    XPATH
    text
    属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//ul[@class='breadcrumbs-linkList']//following-sibling::li[4]//span//span"))).text)
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

奥特罗 根据文件:

  • 方法
    获取元素的给定属性或属性。
  • 属性返回元素的文本。

    • 下面的一个用于我的验证


      //*[span='first text'和span='Search results for“second text”]

      您遇到了什么错误请将错误添加到问题中我有一个xpath命令和css选择器的空列表,我有:Message:找不到元素。嗨,Sukumar,欢迎来到StackOverflow!你能把你的代码格式化吗?你可以一直读下去,谢谢!