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
Python打印Xpath元素提供空数组_Python_Xpath - Fatal编程技术网

Python打印Xpath元素提供空数组

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/

我正在尝试获取站点中元素的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/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构建的。这正是我要找的!谢谢!