このサイトはアドセンスやアフィリエイト広告を利用しています

python

【解決】beautifulsoup 文字化け日本語textをEncodeする方法

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

-python
-