问题描述
这是我要获取数据的网站: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])
我收到语法错误
。如果有另一种方法可以在不使用 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]')