如何从 table body 中提取纬度值?

How can I extract the value of latitude from table body?

我似乎无法弄清楚如何 return 来自 table 正文的整数。终端是 returning 一个 'none' 类型,如果我在第 10 行去掉 get.attribute("value") 没有任何打印到终端。

from bs4 import BeautifulSoup as bs
import requests
from selenium import webdriver 

driver = webdriver.Safari()
url = driver.get('http://wsn.spaceflight.esa.int/iss/index_portal.php')

#able to get element from web but returning 'none' value in terminal
latitude = driver.find_element_by_xpath('//tbody/tr[1]/td[2]/div')

print(latitude.get_attribute("value"))#something I tried, not working
driver.close()

来自检查网页;您可能需要尝试:

latitude = driver.find_element_by_xpath('//tbody/tr[1]/td[1]/div[2]')

或者这个;因为它有一个 ID:

latitude = driver.find_element_by_xpath('//*[@id="isst_lat"]')

并获取内容:

latitude.text

这是一个string

你可以用下面的线得到经度和纬度。

longitude = driver.find_element_by_xpath("//div[@id='isst_lon']").text
latitude = driver.find_element_by_xpath("//div[@id='isst_lat']").text

如果你想使用 css 那么你可以使用

longitude = driver.find_element_by_css_selector('div#isst_lon').text
latitude = driver.find_element_by_xpath('div#isst_lat').text

您可以通过 id 使用定位器来获取 latitudelongitude,如下所示:

driver = webdriver.Safari()
url = 'http://wsn.spaceflight.esa.int/iss/index_portal.php'
driver.get(url)

WebDriverWait(driver, 20).until(expected_conditions.visibility_of_element_located((By.ID, 'isst_lat')))

latitude = driver.find_element_by_id('isst_lat')
longitude = driver.find_element_by_id('isst_lon')

print(latitude.text)
print(longitude.text)

以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

上面的代码我添加 WebDriverWait 直到找到元素的可见性。

要提取 Latitude 的值,您必须为 visibility_of_element_located() 引入 WebDriverWait,您可以使用以下 :

  • 使用CSS_SELECTOR:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.isst_cd#isst_lat"))).get_attribute("innerHTML"))
    
  • 使用XPATH:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='Latitude']//following::div[1]"))).get_attribute("innerHTML"))
    
  • 注意:您必须添加以下导入:

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