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