gpt4 book ai didi

xpath - 带有text()的Scrapy Xpath包含

转载 作者:行者123 更新时间:2023-12-03 15:29:21 25 4
gpt4 key购买 nike

我正在使用scrapy,并且正在尝试查找包含特定文本的跨度。我有:

response.selector.xpath('//*[@class="ParamText"]/span/node()')

返回:
<Selector xpath='//*[@class="ParamText"]/span/text()' data=u' MILES STODOLINK'>,
<Selector xpath='//*[@class="ParamText"]/span/text()' data=u'C'>,

<Selector xpath='//*[@class="ParamText"]/span/text()' data=u' MILES STODOLINK'>]

但是,当我运行时:
>>> response.selector.xpath('//*[@class="ParamText"]/span[contains(text(),"STODOLINK")]')
Out[11]: []

为什么包含功能不起作用?

最佳答案

contains()无法一次评估多个节点:

/span[contains(text(),"STODOLINK")]

因此,如果 span中有多个文本节点,并且 "STODOLINK"不位于 span的第一个文本节点子级中,则上述表达式中的 contains()将不起作用。您应该尝试对各个文本节点应用 contains()检查,如下所示:
//*[@class="ParamText"]/span[text()[contains(.,"STODOLINK")]]

或者,如果 "STODOLINK"不一定直接位于 span内(可以嵌套在 span的其他元素内),那么您可以简单地使用 .而不是 text():
//*[@class="ParamText"]/span[contains(.,"STODOLINK")]

关于xpath - 带有text()的Scrapy Xpath包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39969770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com