![](/img/trans.png)
[英]Unable to locate element with xpath using python and selenium
[英]Unable to locate element on a webpage using xpath in selenium (python)
我正在尝试从一个名为: https ://dexscreener.com/ethereum/0x1a89ae3ba4f9a97b10bac6a77061f00bb956858b 的网站获取一些数据,我正在尝试获取元素:/html/body/div[1]/div/main/div/div [2]/div/div[2]/div/div/div[1]/div[4]/div[2]/div[1]/div[1]/div[2]/span[2] 其中基本上是网页上代表音量的数字。
我在这里使用了这段代码:
driver.get('https://dexscreener.com/ethereum/' + str(tokenadress))
try:
fivemVolume = WebDriverWait(driver, delay).until(EC.presence_of_element_located(
(By.XPATH, '/html/body/div[1]/div/main/div/div[2]/div/div[2]/div/div/div[1]/div[4]/div[2]/div[1]/div[1]/div[2]/span[2]')))
except:
#more codee
我认为这与默认加载到某些 iframe 的网页有关,但是当我添加此代码时它没有帮助:
driver.switch_to.default_content()
您的定位器与该页面上的任何元素都不匹配。
您尝试访问的元素在 iframe 中。
因此,您首先需要切换到 iframe。
以下代码应该可以工作,但我在该页面上运行 Selenium 时遇到问题,因为它被 cloudflare 阻止了:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 30)
url = "https://dexscreener.com/ethereum/0x1a89ae3ba4f9a97b10bac6a77061f00bb956858b"
driver.get(url)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe[id*='tradingview']")))
value = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "[data-name='legend-source-item'] [class='valueItem-1WIwNaDF'] .valueValue-1WIwNaDF"))).text
print(value)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.