我试图在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()')
一切都没有回报。
捕获&#34;过去几天&#34;的正确语法是什么?
由于
答案 0 :(得分: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%。