web-dev-qa-db-ja.com

Beautifulsoup-nextSibling

私は次を使用してコンテンツ「私の自宅の住所」を取得しようとしていますが、AttributeErrorを取得しました:

address = soup.find(text="Address:")
print address.nextSibling

これは私のHTMLです:

<td><b>Address:</b></td>
<td>My home address</td>

tdタグを下に移動してコンテンツを取得する良い方法は何ですか?

33
ready

Bs4を使用する場合は、これを試してください。

print soup.find(string="Address:").find_next('td').contents[0]
10
Vyachez

findChildrenを使用すると、テーブル内にあると仮定して、テーブル内のtdを簡単に反復処理できます。最初に、理想的にはテーブルを見つけることができます。

table = soup.find('table')
>>> for td in table.findChildren('td'):
...:     print td.text
...:     
...:     
Address:
My home address

または、アドレスを検索して、テーブルコンテナーを取得することもできます。

>>> import re
>>> search = re.compile('Address')
>>> table = soup.find(text=search).parent.parent.parent
2
zeekay