Python打印Xpath元素提供空数组
我正在尝试获取站点中元素的xpath 特别是汇总速度表下的结果。不管是买还是卖 使用GoogleChromeXPath我得到了结果Python打印Xpath元素提供空数组,python,xpath,Python,Xpath,我正在尝试获取站点中元素的xpath 特别是汇总速度表下的结果。不管是买还是卖 使用GoogleChromeXPath我得到了结果 //*[@id="technicals-root"]/div/div/div[2]/div[2]/span[2] 为了尝试用python获取数据,我将其插入 from lxml import html import requests page = requests.get('https://www.tradingview.com/symbols/BTCUSD/
//*[@id="technicals-root"]/div/div/div[2]/div[2]/span[2]
为了尝试用python获取数据,我将其插入
from lxml import html
import requests
page = requests.get('https://www.tradingview.com/symbols/BTCUSD/technicals/')
tree = html.fromstring(page.content)
status = tree.xpath('//*[@id="technicals-root"]/div/div/div[2]/div[2]/span[2]/text()')
当我打印状态时,我得到一个空数组。但xpath似乎没有任何问题。我读到过谷歌对错误编写的HTML表进行了一些恶作剧,这些表将输出错误的xpath,但这似乎不是问题所在
感谢advanced中的帮助当我运行代码时,“technicals root”div为空。我认为javascript正在填充它。当您无法静态地获取页面时,您可以随时转到运行浏览器,让它解决所有问题。您可能需要调整驱动程序路径以使其在您的环境中工作,但这对我来说很有用:
import time
import contextlib
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
option = webdriver.ChromeOptions()
option.add_argument(" — incognito")
with contextlib.closing(webdriver.Chrome(
executable_path='/usr/lib/chromium-browser/chromedriver',
chrome_options=option)) as browser:
browser.get('https://www.tradingview.com/symbols/BTCUSD/technicals/')
# wait until js has filled in the element - and a bit longer for js churn
WebDriverWait(browser, 20).until(EC.visibility_of_element_located(
(By.XPATH,
'//*[@id="technicals-root"]/div/div/div[2]/div[2]/span')))
time.sleep(1)
status = browser.find_elements_by_xpath(
'//*[@id="technicals-root"]/div/div/div[2]/div[2]/span[2]')
print(status[0].text)
您希望得到什么输出?
是空的,这就是您要问的吗?当我使用Chrome的inspect检查该元素时,我看到它在一个范围内。我在下载的html中找不到跨度,这表明它是在浏览器中使用Javascript构建的。这正是我要找的!谢谢!