テストコード。まだ完全には理解できていない。
from bs4 import BeautifulSoup
html = """
<body>
<a>A tag</a>
whatever outside <br> <br/>
<a>iyay <i> somthing inside </i> </a>
</body>
"""
soup = BeautifulSoup(html)
print 'navigation by "find_next()" method'
a = soup.a
for i in range(10):
if i == 1:
print type(a)
print i, ':', a
a = a.find_next()
if not a:
break
print '\n'
print 'navigation by "find_next_sibling()" attribute'
a = soup.a
for i in range(10):
if i == 1:
print type(a)
print i, ':', a
a = a.find_next_sibling()
if not a:
break
print '\n'
print 'navigation by "next_sibling" attribute'
a = soup.a
for i in range(10):
if i == 1:
print type(a)
print i, ':', a
a = a.next_sibling
if not a:
break
print '\n'
print 'navigation by "next_element" attribute'
a = soup.a
for i in range(10):
if i == 1:
print type(a)
print i, ':', a
a = a.next_element
if not a:
break
出力結果:
navigation by "find_next()" method
0 : <a>A tag</a>
<class 'bs4.element.Tag'>
1 : <br/>
2 : <br/>
3 : <a>iyay <i> somthing inside </i> </a>
4 : <i> somthing inside </i>
navigation by "find_next_sibling()" attribute
0 : <a>A tag</a>
<class 'bs4.element.Tag'>
1 : <br/>
2 : <br/>
3 : <a>iyay <i> somthing inside </i> </a>
navigation by "next_sibling" attribute
0 : <a>A tag</a>
<class 'bs4.element.NavigableString'>
1 :
whatever outside
2 : <br/>
3 :
4 : <br/>
5 :
6 : <a>iyay <i> somthing inside </i> </a>
7 :
navigation by "next_element" attribute
0 : <a>A tag</a>
<class 'bs4.element.NavigableString'>
1 : A tag
2 :
whatever outside
3 : <br/>
4 :
5 : <br/>
6 :
7 : <a>iyay <i> somthing inside </i> </a>
8 : iyay
9 : <i> somthing inside </i>
]]>