要素のリストを取得したり、タグの文字列を取得したりして、beautifulSoup parsetree を分割するさまざまな方法があります。しかし、分割中にツリーをそのままにしておく方法はないようです。
次のスニペット (スープ) を で分割したいと思い<br />
ます。文字列では些細なことですが、構造を維持したいので、パースツリーのリストが必要です。
s="""<p>
foo<br />
<a href="http://...html" target="_blank">foo</a> | bar<br />
<a href="http://...html" target="_blank">foo</a> | bar<br />
<a href="http://...html" target="_blank">foo</a> | bar<br />
<a href="http://...html" target="_blank">foo</a> | bar
</p>"""
soup=BeautifulSoup(s)
もちろん、私は を行うことができますが[BeautifulSoup(i) for i in str(soup).split('<br />')]
、それは醜く、そのためのリンクが多すぎます。
soup.findAll('br') でのsoup.next およびsoup.previousSibling() の反復は可能ですが、パースツリーではなく、それに含まれるすべての要素のみを返します。
すべての親と兄弟の関係を維持しながら、BeautifulSoup タグからタグの完全なサブツリーを抽出するソリューションはありますか?
より明確にするために編集します。
結果は BeautifulSoup-Objects で構成されるリストになるはずで、分割されたスープをさらに下へ、output[0].a、output[1].text などでトラバースできます。sでスープを分割すると、<br />
さらに処理するすべてのリンクのリストが返されます。これが必要です。上記のスニペットからのすべてのリンク。テキスト、属性、および各リンクの説明である次の「バー」を含みます。