find_element_by_xpath() 通过仅从 Safari 复制粘贴 Xpath 给我语法错误

问题描述

这是我要获取数据的网站:https://www.wunderground.com/history/daily/gb/london/EGLC/date/2017-2-10在这种情况下,我想采用 2.7 的日平均温度。当我在 safari 中检查元素时,我可以将该行复制为 HTML、Xpath 或属性。由于selenium可以通过Xpath查找元素,所以我选择了这种方式。但是,当我将其复制并粘贴到

driver.find_element_by_xpath(//*[@id="inner-content"]/div[2]/div/div[3]/div/div/lib-city-history-summary/div/div[2]/table/tbody[1]/tr[3]/td[1]) 

我收到语法错误

A picture of the inspection

如果有另一种方法可以在不使用 Xpath 的情况下选择元素并且它有效,我也可以使用它。谢谢。

解决方法

xpath 需要用引号引起来,这意味着您不需要转义双引号:

driver.find_element_by_xpath("//*[@id=\"inner-content\"]/div[2]/div/div[3]/div/div/lib-city-history-summary/div/div[2]/table/tbody[1]/tr[3]/td[1]") 

或将它们更改为单引号:

driver.find_element_by_xpath("//*[@id='inner-content']/div[2]/div/div[3]/div/div/lib-city-history-summary/div/div[2]/table/tbody[1]/tr[3]/td[1]") 

或者,为了更轻松地使用复制粘贴,将 xpath 括在单引号中:

driver.find_element_by_xpath('//*[@id="inner-content"]/div[2]/div/div[3]/div/div/lib-city-history-summary/div/div[2]/table/tbody[1]/tr[3]/td[1]') 
,

那是因为它需要作为一个字符串。添加引号,如下面的代码所示

driver.find_element_by_xpath('//*[@id="inner-content"]/div[2]/div/div[3]/div/div/lib-city-history-summary/div/div[2]/table/tbody[1]/tr[3]/td[1]')