Python 无法分析网页中的特定值
我已经用python和selenium结合编写了一些代码,从一个网站(本例中为“49°57'09”N(49.952500)”中获取“纬度”,但出于某种原因,我得到了TimeoutException。我不明白我从何而来。对此的任何输入都将不胜感激 我正在尝试使用的脚本:Python 无法分析网页中的特定值,python,python-3.x,selenium,selenium-webdriver,web-scraping,Python,Python 3.x,Selenium,Selenium Webdriver,Web Scraping,我已经用python和selenium结合编写了一些代码,从一个网站(本例中为“49°57'09”N(49.952500)”中获取“纬度”,但出于某种原因,我得到了TimeoutException。我不明白我从何而来。对此的任何输入都将不胜感激 我正在尝试使用的脚本: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui impor
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
driver = webdriver.Chrome()
driver.get("http://www.gcmap.com/airport/EDEF")
wait = WebDriverWait(driver, 10)
driver.switch_to_frame(0)
for item in wait.until(EC.presence_of_all_elements_located((By.XPATH, "//table[contains(@class,'vcard')]//td/abbr[@class='latitude']"))):
print(item.text)
driver.quit()
纬度所在的元素:
<td colspan="2" nowrap=""><abbr class="latitude" title="49.952500"></abbr>49°57'09"N (49.952500)</td>
这里的问题是,所需的文本不在
标记内,而是在它的父元素
标记内。要查找元素的父元素,可以使用XPath的双点语法和。通过XPath查找元素(“…”)
。此外,通过它的类名查找
比使用它的XPath干净得多。注意,下面的代码不需要等待(无论是显式还是隐式的):
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.gcmap.com/airport/EDEF")
item = driver.find_element_by_class_name('latitude')
itemParentText = item.find_element_by_xpath("..").text
感谢Vinícius Aguiar,感谢您提出的尖锐而有效的解决方案。关于原因的一行解释或任何链接(…)语法应该被应用,我将不胜感激。请原谅我的无知,再次感谢。我很高兴能提供帮助!我认为
selenium
与bs4的没有类似之处。findParent
因此这是一个明确的解决办法,尽管这似乎是最好的方法,但您可以在中查看此XPath的语法“解释”。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.gcmap.com/airport/EDEF")
item = driver.find_element_by_class_name('latitude')
itemParentText = item.find_element_by_xpath("..").text
>>> print(itemParentText)
49°57'09"N (49.952500)