2014-11-03 47 views
0

我试图使用XPath上this page从捕获文本“这几天”:XPath语法

<li class="last"> 
Last visited 
<span> 


past few days 

</span> 
</li> 

我已经试过XPath表达式'//li[@class="last"]/span/text()'的几个变种,如部分:

from lxml import html 
import requests 
page = requests.get(url) 
tree = html.fromstring(page.text) 
visit = tree.xpath('//li[@class="last"]/span/text()') 

所有什么都不会返回。

什么是捕获“过去几天”的正确语法?

感谢

+0

当我去你给的页面,我没有看到“上次访问”或“两周前”... – user3616725 2014-11-04 08:56:38

+0

对不起,这是来自另一个类似的页面。你应该看到“过去几天”。现在修复。问题依然存在。 – zadrozny 2014-11-04 21:19:53

回答

0

该页面有一个默认的命名空间(xmlns="http://www.w3.org/1999/xhtml")。您将不得不注册该名称空间并在xpath中使用前缀,或者使用local-name()(和namespace-uri(),如果存在具有相同本地名称的不同名称空间的元素的可能性)。

local-name() ...

//*[local-name()="li"][@class="last"]/*[local-name()="span"]/text() 

免责声明:我不使用scrapy或Python。这个答案纯粹是xpath,可能不适用于100%。