所以我在和刮胡子玩了tutorial。我正在尝试获取companion website中每个引用的文本、作者和标记 使用这里提到的CSS选择器时:
for quote in response.css('div.quote'):
print quote.css('span.text::text').extract()
print quote.css('span small::text').extract()
print quote.css('div.tags a.tag::text').extract()
我得到了想要的结果(即:每一篇文章,作者和引文打印一次)。 但是像这样使用Xpath选择器:
^{pr2}$我有重复的结果!在
我还是不明白为什么两者之间有这么大的区别。在
使用//时,它将从响应中获取所有结果。如果使用//则其作用域将被限制为该选择器。尝试
.//
而不是//
。它将解决您的问题:-)尝试使用
.//
而不是//
进行相关搜索,例如print quote.xpath(".//*[@class='text']/text()").extract()
当您使用
//
时,尽管您是从quote
进行搜索,但这意味着绝对搜索,因此其上下文仍然是文档的根。.//
但是,意味着从.
搜索当前节点,并且此搜索的上下文将限于quote
下嵌套的元素。在另外,如果您希望得到完全相同的结果,您应该考虑将}。在这种情况下,这没有任何区别,只是一个头部,以备将来参考。在
*
更改为您在CSS搜索中使用的标记-span
或{相关问题 更多 >
编程相关推荐