目次
BeautifulSoupの文字化け
プログラムにおいて、日本語というのはすごくめんどくさいです。
日本に生まれたことを後悔するレベルでメンドクサイ。
今回はrequestsを使ったスクレイピングにおける、BeautifulSoupの文字化けの解消法です。
res.textをやめる
大体BeautifulSoupにテキストを渡すときはこんな感じだと思います。
import requests from bs4 import BeautifulSoup as bs4 res = requests.get('https://www.yahoo.co.jp') soup = bs4(res.text,'lxml')
このパターンだと文字化けするサイトが割とあります。
res.contentを渡す癖をつける
import requests from bs4 import BeautifulSoup as bs4 res = requests.get('https://www.yahoo.co.jp') soup = bs4(res.content,'lxml')
requestsのレスポンスオブジェクトのtextというのはunicode文字列を取得できますが、contentではbytes文字列を取得できます。
これでだけで95%の文字化けは解消されます。
BeautifulSoupのDOM取得メソッドまとめた記事は以下です。
【Python】BeautifulSoupの使い方・基本メソッド一覧|スクレイピング
目的のHTMLタグや、テキストの抜き出しに使うPythonのライブラリBeautifulSoupについて詳しく解説
文字コードを指定する
それでも治らない場合は文字コード指定。
soup = bs4(res.content,'lxml',from_encoding='utf-8')
コメント