Python爬虫没有找到特定的Xpath

时间:2014-12-23 10:43:43

标签: python html selenium xpath selenium-webdriver

我在这里问了我之前的问题:

Xpath pulling number in table but nothing after next span

这很有效,我设法在一个名为xpath checker的firefox插件中看到了我想要的数字。结果如下所示。

enter image description here

所以我知道我可以用这个xpath找到这个数字,但是当试图运行一个python scrpit来查找并保存它说它无法找到的数字时。

try:
    views = browser.find_element_by_xpath("//div[@class='video-details-inside']/table//span[@class='added-time']/preceding-sibling::text()")
except NoSuchElementException:
    print "NO views"
    views = 'n/a'
    pass  

我没有通过不是最好的做法,但我只是在试图找到这个数字时测试这个。我想知道是否需要在xpath的末尾更改某些内容,例如.text,因为xpath检查程序通常会显示结果略有不同。如下所示:

enter image description here

我需要使用我给出的xpath而不是上面图片中使用的xpath,因为我只想要数字而不是日期。您可以在我之前的问题中看到部分来源。

提前致谢!在这里挠我的头。

1 个答案:

答案 0 :(得分:1)

find_element_by_xpath() 中使用的xpath必须指向一个元素,而不是文本节点而不是属性。这是一件至关重要的事情。

这里最简单的方法是:

  • 获取td的文字(父母)
  • 获取span的文字(儿童)
  • 从父母的
  • 中移除子文字

代码:

span = browser.find_element_by_xpath("//div[@class='video-details-inside']/table//span[@class='added-time']")
td = span.find_element_by_xpath('..')
views = td.text.replace(span.text, '').strip()