で解析ツリーBeautifulSoup
をナビゲートする方法の詳細を確認してください。解析木にはtags
and NavigableStrings
(THIS IS A TEXT) があります。例
from BeautifulSoup import BeautifulSoup
doc = ['<html><head><title>Page title</title></head>',
'<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
'<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
'</html>']
soup = BeautifulSoup(''.join(doc))
print soup.prettify()
# <html>
# <head>
# <title>
# Page title
# </title>
# </head>
# <body>
# <p id="firstpara" align="center">
# This is paragraph
# <b>
# one
# </b>
# .
# </p>
# <p id="secondpara" align="blah">
# This is paragraph
# <b>
# two
# </b>
# .
# </p>
# </body>
# </html>
解析ツリーを下に移動するにはcontents
、 とstring
.
contents は、ページ要素内に含まれる Tag および NavigableString オブジェクトの順序付きリストです
タグに子ノードが 1 つしかなく、その子ノードが文字列の場合、子ノードは tag.string および tag.contents[0] として使用可能になります。
上記の場合、つまり、得ることができます
soup.b.string
# u'one'
soup.b.contents[0]
# u'one'
いくつかの子ノードの場合、たとえば
pTag = soup.p
pTag.contents
# [u'This is paragraph ', <b>one</b>, u'.']
そのため、ここで遊んでcontents
、必要なインデックスでコンテンツを取得できます。
タグを反復処理することもできます。これはショートカットです。例えば、
for i in soup.body:
print i
# <p id="firstpara" align="center">This is paragraph <b>one</b>.</p>
# <p id="secondpara" align="blah">This is paragraph <b>two</b>.</p>