我有像这样的HTML代码
<div>
Foo <span>Bar</span><br />
Baz<br />
<b>Foobar</b> Quux
</div>
现在,我想处理由<br />
标记分隔的节点,如下所示:
nodes = sel.xpath("???")
my_foo = nodes[0] # contains Foo <span>Bar</span>
my_bar = nodes[1] # contains Bar
my_fb = nodes[2] # contains <b>Foobar</b> Quux
是否有一些XPath或CSS表达式会执行此操作,还是必须迭代<div>
的所有子节点,在此过程中为每个不是<br>
的节点构建一个数组?
答案 0 :(得分:3)
我能想到的最接近的是:
[sel.xpath('''.//div/node()[count(preceding-sibling::br)=%d]
[not(self::br)]''' % i).extract()
for i in range(0, len(sel.xpath('.//div/br'))+1)]
给你:
[[u'\n Foo ', u'<span>Bar</span>'],
[u'\n Baz'],
[u'\n ', u'<b>Foobar</b>', u' Quux\n']]
它为您提供<br/>
下<div>
元素之间的节点列表(计算<br>
s并查找之前有<br>
s的节点(无,然后是1) ,然后2))