如何在xpath中使用::before和::after?

如何在xpath中使用::before和::after?,xpath,Xpath,我有一个xpath,它选择正确的文本“部分”,因为它指向正确的s,但是它包括:before和::before这两个我不熟悉的部分 结构类似(站点不同部分的变化) ::之前 格式化“我不想要的东西”格式化 ::之后 格式化“我想要的东西”格式化 格式化“更多我想要的东西”格式化 我的问题是我不熟悉::在之前和之后,而且我得到了单独的条目,包括'/r/n',因此从上面我得到了大约10个条目(同样取决于网站的格式),其中我只想要一个 是否有一种方法可以获得像“stuff i do want mo

我有一个xpath,它选择正确的文本“部分”,因为它指向正确的
s,但是它包括
:before
::before
这两个我不熟悉的部分

结构类似(站点不同部分的变化)


::之前
格式化“我不想要的东西”格式化
::之后
格式化“我想要的东西”格式化

格式化“更多我想要的东西”格式化
我的问题是我不熟悉
::在
之前和之后,而且我得到了单独的条目,包括'/r/n',因此从上面我得到了大约10个条目(同样取决于网站的格式),其中我只想要一个

是否有一种方法可以获得像“stuff i do want more stuff i want”
这样的输出,我将其附加到列表中,并且我的列表的长度应为1

我现在的外派人员给了我


“我不想要的东西,”我想我想要的东西,“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“\r\n\r\n”,,,“\r\n\r\n'。假设您使用的是Scrasty和Python,则提供一些线索:

XPath唯一的解决方案,包括
concat()
normalize-space()
substring-after()
substring-before()
函数:

concat(normalize-space(substring-before(substring-after(//div/text()[normalize-space()][1],'formatting "'),'" formatting'))," ",normalize-space(substring-before(substring-after(//div/text()[normalize-space()][2],'formatting "'),'" formatting'))).get()
输出:

stuff i do want more stuff i want
stuff i do want more stuff i want
XPath与正则表达式解决方案相结合:

import re
text = normalize-space(//div).get()
data = re.findall('"(.+?)"', text, re.IGNORECASE)
print(" ".join(data))
输出:

stuff i do want more stuff i want
stuff i do want more stuff i want

::before
::after
不是XPath的一部分。它们只是字符串表达式。因此,在
之前使用
子字符串,在
之后使用
子字符串来处理它们。