# 逆に言えば、 <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' '''