scrapy xpath不支持间接子语法

scrapy xpath不支持间接子语法,xpath,web-crawler,scrapy,Xpath,Web Crawler,Scrapy,我想选择类“foo”的“li”中的所有“a”元素,因此使用的xpath是li[@class=“foo”]//a,它在和Javascript下工作 然而,我正试图让它在Scrapy下构建的爬行蜘蛛下工作,特别是作为它的链接提取器规则之一,例如 Rule(SgmlLinkExtractor(restrict_xpaths=('//li[@class="foo"]//a | //a[contains(.,"Next")]')), callback='parse_foo', follow=True)

我想选择类“foo”的“li”中的所有“a”元素,因此使用的xpath是
li[@class=“foo”]//a
,它在和Javascript下工作

然而,我正试图让它在Scrapy下构建的爬行蜘蛛下工作,特别是作为它的链接提取器规则之一,例如

Rule(SgmlLinkExtractor(restrict_xpaths=('//li[@class="foo"]//a | //a[contains(.,"Next")]')), callback='parse_foo', follow=True)
它返回的集合比预期的要大得多。
例如,在此页面上,有10个数据集项类div。通过选择
//div[@class=“dataset item”]
我得到了10个项目。但是,当我使用
//div[@class=“dataset item”]//a选择时,我得到68个项目。根据规范,
//a
应该是这些div中的所有a。
如何在Scrapy中实现所需的函数?

是否尝试从表达式中删除
|/a[contains(,“Next”)]
?或者在XPath tester中也尝试了该部分?请向我们展示失败的输入示例和预期输出。是的,在没有
|/a[contains(,“Next”)]
的情况下尝试。该部分可以在各种环境下进行测试。