如何从 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
使用定位器来获取 latitude
和 longitude
,如下所示:
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
我似乎无法弄清楚如何 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
使用定位器来获取 latitude
和 longitude
,如下所示:
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