【问题标题】:xpath syntax for ignoring whitespace and newlines用于忽略空格和换行符的 xpath 语法
【发布时间】:2014-11-03 19:02:30
【问题描述】:

我正在尝试在 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()')

一切都没有回报。

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

谢谢

【问题讨论】:

  • 当我转到您提供的页面时,我没有看到“上次访问”或“两周前”...
  • 抱歉,这是来自另一个类似的页面。您应该看到“过去几天”。现在修好了。问题仍然存在。

标签: xpath web-scraping scrapy python-requests


【解决方案1】:

该页面有一个默认命名空间 (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%。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多