次のような HTML コードがあります。
<p>aaa</p>bbb
<p>ccc</p>ddd
「bbb」と「ddd」はどうすれば取得できますか?
次のような HTML コードがあります。
<p>aaa</p>bbb
<p>ccc</p>ddd
「bbb」と「ddd」はどうすれば取得できますか?
各タグの後続の兄弟を読むことができますp
(これはこのテキストに非常に固有のものであるため、状況に合わせて拡張できることを願っています):
In [1]: from bs4 import BeautifulSoup
In [2]: html = """\
...: <p>aaa</p>bbb
...: <p>ccc</p>ddd"""
In [3]: soup = BeautifulSoup(html)
In [4]: [p.next_sibling for p in soup.findAll('p')]
Out[4]: [u'bbb\n', u'ddd']
これにより、末尾の改行が取得されるため、必要に応じて削除できます。
In [5]: [p.next_sibling.strip() for p in soup.findAll('p')]
Out[5]: [u'bbb', u'ddd']
一般的な考え方は、ターゲット テキストの前にタグを配置し、次の兄弟要素 (テキストである必要があります) を見つけることです。
値 ('bbb'、'ddd') をタグ (as <span>
)で囲むと簡単です。
次に、次を使用して取得できます:soup('span')