BeautifulSoup

Python 「Beautiful Soup」 で HTML / XML を解析 基本的な処理1

以下のようなhtmlから、titleタグやdivタグの要素(メタ情報、内部のテキスト)の取得方法を確認する。

<html>
 <head>
  <title>
   Test Page
  </title>
 </head>
 <body>
  <div class="main">
   <p>
    hello, world!!
   </p>
  </div>
  <div class="sub">
   <p>
    sub text
   </p>
  </div>
 </body>
</html>

サンプルコード

from bs4 import BeautifulSoup

doc = ['<html><head><title>Test Page</title></head><body>',
       '<div class="main"><p>hello, world!!</p></div>',
       '<div class="sub"><p>sub text</p></div>',
       '</body></html>']
soup = BeautifulSoup(''.join(doc), "html.parser")
print (soup.prettify())

# titleタグを取得
print(soup.title) # <title>Test Page</title>

# titleタグの内部のテキストを取得
print(soup.title.string) # Test Page

# 最初のdivタグ取得
div = soup.div
print(div)  # <div class="main"><p>hello, world!!</p></div>

# divタグのタグ名を取得
print(div.name) # div

# divタグの属性を取得 
print(div.attrs) # {'class': ['main']}

# divタグのclassを取得
print(div['class'])  # ['main']

# divタグの内部のテキストを取得
print(div.string) # hello, world!!

# divタグの次のpタグの内部テキストを取得
print(div.p.string) # hello, world!!