使用 Xpath 使用 Selenium 进行网页抓取

问题描述 投票:0回答:1

我正在寻找一些号码 https://tnnslive.com/

我在 tnnslive.com 上寻找的号码:

the numbers I'm looking for on tnnslive.com

如果我在 Chrome 中复制 xpath,我会得到:

//*[@id="root"]/div/div/div/div/div/div/div/div[2]/div[2]/div/div/div/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div/div/div[3]/div/div/div/div[7]/div/div[2]

如果我运行以下代码:

from selenium import webdriver

# Start a new Chrome browser session
driver = webdriver.Chrome(executable_path="PATH_TO_CHROMEDRIVER")

# Navigate to the desired URL
driver.get('https://tnnslive.com/match/VDDGj17PodORnq62YwQk')

# Find the element by its XPath and print its text
element = driver.find_element("xpath", '//*[@id="root"]/div/div/div/div/div/div/div/div[2]/div[2]/div/div/div/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div/div/div[3]/div/div/div/div[7]/div/div[2]')    

# Close the browser
driver.quit()

出现错误:

NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="root"]/div/div/div/div/div/div/div/div[2]/div[2]/div/div/div/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div/div/div[3]/div/div/div/div[7]/div/div[2]"}
  (Session info: chrome=115.0.5790.171)

为什么?我该如何解决这个问题?

selenium-webdriver xpath webdriver webdriverwait xpath-1.0
1个回答
0
投票

要打印与网站内第一个玩家赢得的第一个发球点相关的文本,您需要为visibility_of_element_ located()诱导WebDriverWait,并且您可以使用以下任一定位器策略:

    使用
  • XPATH

    following-sibling

    text 属性: driver.get(url='https://tnnslive.com/match/MpVVddDZigie7GHM9ip8') print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='1st Serve Points Won']//following-sibling::div[1]"))).text)

  • 使用
  • XPATH

    following

    get_attribute("innerHTML")
    driver.get(url='https://tnnslive.com/match/MpVVddDZigie7GHM9ip8')
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='1st Serve Points Won']//following::div[1]"))).get_attribute("innerHTML"))
    

  • 控制台输出:
  • 64% (29/45)

  • 注意

    :您必须添加以下导入: from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

    
    
您可以在
如何使用 Selenium - Python 检索 WebElement 的文本

中找到相关讨论

参考文献

有用文档的链接:

© www.soinside.com 2019 - 2024. All rights reserved.