BeautifulSoup4のNavigableStringオブジェクトについて
みなさまおはこんばんにちは、せなです
今回はBeautifulSoup4で使用されているNavigableStringオブジェクトについて説明したいと思います
Contents
NavigableStringについて
BeautifulSoup4ではタグの間の文字列などをNavigableStringオブジェクトとして使用しています
以下のコードはNavigableStringオブジェクトとBeautifulSoupオブジェクトの見本です
soup = BeautifulSoup('<p>Beautiful Soup</p>', 'html.parser')
print(soup.string)
# Beautiful Soup
print(type(soup.string))
# <class 'bs4.element.NavigableString'>
print(soup)
# <p>Beautiful Soup</p>
print(type(soup))
# <class 'bs4.BeautifulSoup'>
NavigableStringオブジェクトの文字列を直接操作したい時には「extract()
」メソッドや「replace_with()
」メソッドを使用することで変更することができます
(NavigableStringオブジェクトは多くのメソッドには対応していません、Tagオブジェクトに関係したメソッドではほとんどの場合は「AttributeError」などが発生します)
soup = BeautifulSoup('<p>Beautiful Soup</p>', 'html.parser')
soup.string.replace_with('Navigable String')
print(soup)
# <p>Navigable String</p>
tag_string = soup.string.extract()
print(tag_string)
# Navigable String
NavigableStringオブジェクトをBeautifulSoupの外で使用する時には「str()
」メソッドなどでStringなどに変換して使用します
(NavigableStringオブジェクトをそのまま使用していると、BeautifulSoupのパースを保持し続けるため、メモリを大きく消費します)
soup = BeautifulSoup('<p>Beautiful Soup</p>', 'html.parser')
str_soup = str(soup.string)
print(type(str_soup))
# <class 'str'>
ディスカッション
コメント一覧
まだ、コメントがありません