我正在尝试从html页面中的交替标签获取一系列数据。 html看起来像这样:
<div>
<h3>title</h3>
<div>text</div>
<h3>title</h3>
<div>text</div>
...
</div>
由于我无法抓住&#34;中的每一对h3 / div对,对于div&#34;中的每一对,我如何有效地抓住它们?
答案 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