如何在python beautifulsoup中抓取交替的子标签

时间:2014-11-28 17:59:09

标签: python python-3.x beautifulsoup

我正在尝试从html页面中的交替标签获取一系列数据。 html看起来像这样:

<div>
    <h3>title</h3>
    <div>text</div>
    <h3>title</h3>
    <div>text</div>
    ...
</div>

由于我无法抓住&#34;中的每一对h3 / div对,对于div&#34;中的每一对,我如何有效地抓住它们?

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,但对我来说最简单的方法是选择所有h3标签,然后走DOM以获得他们的下一个兄弟。

答案 1 :(得分:0)

找到所有标题,然后从那里抓取next sibling

for header in soup.select('div h3'):
    next_div = header.find_next_sibling('div')
如果找不到这样的兄弟,

element.find_next_sibling()会返回一个元素或None

演示:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''\
... <div>
...     <h3>First header</h3>
...     <div>First div to go with a header</div>
...     <h3>Second header</h3>
...     <div>Second div to go with a header</div>
... </div>
... ''')
>>> for header in soup.select('div h3'):
...     next_div = header.find_next_sibling('div')
...     print(header.text, next_div.text)
... 
First header First div to go with a header
Second header Second div to go with a header