Learn Beautiful Soup(6)-BeautifulSoupでのエンコーディングのサポート


すべてのページには独自のコードがあります.UTF-8は現在のウェブサイトの標準コードです.したがって、これらのページを這い出す場合、爬虫プログラムはこれらのページの符号化を理解しなければならない.そうでなければ、Webページで正しい文字を見ている可能性がありますが、這い出した結果は文字化けしています.BeautifulSoupはこれらのコードを熟練して処理することができます.
BeautifulSoupでのエンコーディング
一般的に1つのページでは、charsetという属性からページの符号化が表示されます.
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

BeautifulSoupでは、UnicodeDammitライブラリを使用してドキュメントのエンコードを自動的に検出します.BeautifulSoupは、soupオブジェクトを作成すると自動的にUnicode符号化に変換されます.
HTMLドキュメントの元のコードを理解し、soup.original_encodingは、ドキュメントの元の符号化を教えてくれます.
HTMLドキュメントのエンコーディングを指定すると、UnicodeDammitライブラリはドキュメント全体を検索し、ドキュメントがどのようなエンコーディングを採用しているかを検出します.これにより、時間が無駄になり、UnicodeDammitがエラーを検出する可能性があります.ドキュメントのエンコーディングが何であるかが分かれば、BeautifulSoupオブジェクトを最初に作成するときにfrom_を使用できます.encodingは、ドキュメントの符号化を指定します.
soup = BeautifulSoup(html_markup,"lxml",from_encoding="utf-8")

コーディングしゅつりょく
BeautifulSoupではテキストを出力する方法もあります.例えばprettify()は、UTF-8の符号化のみで出力される.文書が他のタイプの符号化であってもUTF-8は出力を符号化する.
ただしprettify()は、他の符号化フォーマット出力を指定することもできます.
print(soup.prettify("ISO8859-2")

出力をencode()で符号化することもできます.encode()のデフォルトもUTF 8で符号化されます.しかし、符号化方式の出力を指定することもできます.