pythonでbeautifulsoupでスクレイピングした際に文字化けしてしまう。UTF-8なのに文字化けするという問題の解決方法を紹介。
サンプルコード
import urllib, requests
from bs4 import BeautifulSoup as bs4
url = 'https://www.****.com'
source = requests.get(url)
#source.encoding = source.apparent_encoding うまく行かないときのおまじない sourceの部分は変数なので順次書き換えてください
soup = bs4(source.text,'html5lib')
#soup = bs4(source.content,'html5lib') textをcontentに変更した場合
#soup = BeautifulSoup(source.text,'html5lib’, from_encoding='utf-8') Encodeを指定
print(soup)
textではなくcontentでテキストを取得する
bs4(source.text,'html5lib')
この部分を textからcontentに書き換えて実行してくださいこれでだいたい解決します
source.encoding = source.apparent_encodingを追記する
source = requests.get(url)
source.encoding = source.apparent_encoding
soup = bs4(source.text,'html5lib')
print(soup)
文字コードを指定してエンコードする
soup = bs4(source.text,'html5lib')
soup = BeautifulSoup(source.text,'html5lib’, from_encoding='utf-8')
文字コードは対象サイトのHTMLのheader部分に記載されているので、それを記入してください
と入っても utf-8 か shift_jisなのでどちらかをためせばOK