使用换行符从一个跨度获取2个单独的xpath值

时间:2019-03-08 21:29:48

标签: html xpath scrapy

我的HTML看起来像这样:

<span>
Word 1
Sentence 1
</span>

我可以用以下方法提取它:

//span/text()

这给了我

Word 1
Sentence 1

在XPATH中是否可以分别获取/提取Word 1和Sentence 1? (Python中用于Scrapy的XPath提取器)

我尝试过:

//span/text()[1]
//span/text()[2]

substring-before(//span/text(),'\n')

但两者都是疯狂的猜测,无法正常工作。

2 个答案:

答案 0 :(得分:1)

您可以使用的第一项“单词1”

normalize-space(substring-before(substring-after(translate(span/text(),'&#xd;',''),'&#xa;'),'&#xa;'))

并获得第二项“句子1”,

normalize-space(substring-after(substring-after (translate(span/text(),'&#xd;',''),'&#xa;'),'&#xa;'))

如果不需要,可以删除normalize-space(...)
上下文节点应为span的父节点,否则您应在表达式前加上//。您的主要问题是第一项之前有换行符(\n)。

编辑:
我添加了一个解决方案,用于处理Windows CR的{​​{1}}字符。它只是删除CRLF字符并作用于CR字符。

答案 1 :(得分:0)

请参见a previous question,以了解如何正确访问元素的内部内容。

然后,处理输出字符串以适合您的需求。