Beautiful-soup-modifying-the-tree
美しいスープ-ツリーを変更する
BeautifulSoupの重要な側面の1つは、解析ツリーを検索することです。これにより、要件に応じてWebドキュメントに変更を加えることができます。 .name、.string、.append()メソッドなどの属性を使用して、タグのプロパティを変更できます。 .new_string()および.new_tag()メソッドを使用して、既存のタグに新しいタグと文字列を追加できます。 .insert()、. insert_before()、. insert_after()など、HTMLまたはXMLドキュメントにさまざまな変更を加える他のメソッドもあります。
タグ名と属性の変更
スープを作成したら、タグの名前変更、属性の変更、新しい属性の追加、属性の削除などの変更を簡単に行うことができます。
新しい属性の変更と追加は次のとおりです-
属性の削除は次のとおりです-
.stringの変更
タグの.string属性を簡単に変更できます-
上記から、タグに他のタグが含まれているかどうかを確認できます。タグとそのすべてのコンテンツが新しいデータに置き換えられます。
append()
既存のタグに新しいデータ/コンテンツを追加するには、tag.append()メソッドを使用します。 Pythonリストのappend()メソッドとよく似ています。
ドキュメントに文字列を追加する場合は、append()を使用するか、NavigableString()コンストラクタを使用して簡単に行うことができます-
- 注意:*次のように、NavigableString()関数にアクセス中に名前エラーが見つかった場合
NameError:名前「NavigableString」が定義されていません
ちょうどbs4パッケージからNavigableStringディレクトリをインポートします-
上記のエラーを解決できます。
既存のタグにコメントを追加したり、NavigableStringの他のサブクラスを追加したりできます。コンストラクタを呼び出すだけです。
新しいタグ全体を追加する(既存のタグに追加しない)には、Beautifulsoup組み込みメソッドBeautifulSoup.new_tag()を使用します。
最初の引数であるタグ名のみが必須です。
インサート()
Pythonリストの.insert()メソッドと同様に、tag.insert()は新しい要素を挿入しますが、tag.append()とは異なり、新しい要素は必ずしも親のコンテンツの最後に配置されるわけではありません。 新しい要素は任意の位置に追加できます。
insert_before()およびinsert_after()
解析ツリーの何かの直前にタグまたは文字列を挿入するには、insert_before()を使用します-
同様に、解析ツリー内の何かの直後にタグまたは文字列を挿入するには、insert_after()を使用します。
clear()
タグの内容を削除するには、tag.clear()を使用します-
エキス()
ツリーからタグまたは文字列を削除するには、PageElement.extract()を使用します。
decompose()
tag.decompose()は、ツリーからタグを削除し、その内容をすべて削除します。
と置換する()
名前が示すように、pageElement.replace_with()関数は、ツリー内の古いタグまたは文字列を新しいタグまたは文字列に置き換えます-
上記の出力では、replace_with()が置換されたタグまたは文字列(この例では「Material」のように)を返すことに気付いたので、それを調べたり、ツリーの別の部分に追加したりできます。
ラップ()
pageElement.wrap()は、指定したタグで要素を囲み、新しいラッパーを返します-
unwrap()
tag.unwrap()はwrap()の反対で、タグをそのタグ内の任意のものに置き換えます。
上記から、replace_with()と同様に、unwrap()は置換されたタグを返すことがわかりました。
以下は、それをよりよく理解するためのunwrap()のもう1つの例です-
unwrap()はマークアップを取り除くのに適しています。