Example #1
0
# 逆に言えば、 <BODY>TagのpreviousSiblingは<HEAD>Tagで、<HEAD>TagのpreviousSiblingはNoneです。

soup.body.previousSibling.name # u'head'
soup.head.previousSibling == None # True

'''
もうちょっと例を出します。 
最初の<P>TagのnextSiblingは二番目の<P>Tagです。
二番目の<P>Tagの中にある<B>TagのpreviousSiblingはNavigableStringの “This is paragraph” です。
このNavigableStringのpreviousSiblingはNoneで、最初の<P>Tagの中には他になにもありません。
'''

soup.p.nextSibling # <p id="secondpara" align="blah">This is paragraph <b>two</b>.</p>

secondBTag = soup.findAlll('b')[1]
secondBTag.previousSibling # u'This is paragraph'
secondBTag.previousSibling.previousSibling == None # True

'''
next と previous
これらのメンバ変数はパーサーが処理したのと同じ順序でドキュメントのエレメントを扱います。
ツリーの中で出てきた順序ではありません。
例えば、 <HEAD>Tagのnextは、<BODY>Tagではありません。
なぜなら、元のドキュメントでは、<TITLE>タグは<HEAD>タグの直後にあるからです。
'''
soup.head.next # u'title'
soup.head.nextSibling.name # u'body'
soup.head.previous.name # u'html'

'''