Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 无法分析网页中的特定值_Python_Python 3.x_Selenium_Selenium Webdriver_Web Scraping - Fatal编程技术网

Python 无法分析网页中的特定值

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

我已经用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 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)