Xpath用于提取两个已知div之间的所有内容

时间:2015-05-13 14:55:24

标签: python html xpath scrapy

是否可以在两个已知div之间选择任意数量的div,如下所示,

div[@class="foo"]
div[@id="dog"]
div[@id="cat"]
div[@id="horse"]
div[@class="bar"]
div[@class="clearall"]
div[@class="foo"]
div[@id="sheep"]
div[@id="monkey"]
div[@class="bar"]
...etc.

我想选择每个组中div[@class="foo"]div[@class="bar"]之间的所有div。我不知道它们之间会有多少个div,它会有所不同。

我已经尝试过考虑先前兄弟姐妹和兄弟姐妹但是我只能选择与已知div相距最近的div。

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。这里的诀窍是使用Scrapy XSLT extensions中的集合操作。

这个想法是,对于每个div.pending{ color:yellow } div.in-progress{ color:orange } ,选择它之后的所有内容减去div[@class='foo']之后的内容

以下是Scrapy shell中的一个示例,使用我在本地创建的HTML:

div[@class='bar']