NO IMAGE

【メモ書き】Beautiful Soupでスクレイピングした時の文字化け対処

  • 2022年3月2日
  • 2022年3月2日
  • IT, Python

こんにちはますのです。

現在気象庁の公開しているxmlやjsonから地震情報を定期的に確認出来ないかと模索しています。

その際にPythonでBeautiful Soupを使ってスクレイピングをする方法があったので試行錯誤中です。

困ったこと:日本語に対して文字化けが発生

まずはスクレイピングした値を出力できるかだけを試そうとしましたが文字化けが発生。

#スクレイピング対象のURLから値を取得
res = requests.get('https://www.data.jma.go.jp/developer/xml/feed/eqvol.xml')

#取得した値からBeautifulSoupオブジェクトを作成
soup = BeautifulSoup(res.txt, 'html.parser')

# title タグの文字列を全て取得する
title_text = soup.find_all('title')
print(title_text)

実行したところ文字列は取得出来ているようですが日本語部分が文字化けしている様子。

[<title>高頻度(地震火山)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>火山の状況に関する解説情報</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>震源・震度に関する情報</title>]

参考:10分で理解する Beautiful Soup

参考:【Python】Webスクレイピング入門(BeautifulSoup4編)

解決:res.txtをres.contentへ変更

詳しい原理は理解出来ておらず。
Webページのエンコーディング部分の処理で文字化けしている様子。

こんな感じに変更してみる。

#スクレイピング対象のURLから値を取得
res = requests.get('https://www.data.jma.go.jp/developer/xml/feed/eqvol.xml')

#取得した値からBeautifulSoupオブジェクトを作成
soup = BeautifulSoup(res.content, 'html.parser')

# title タグの文字列を全て取得する
title_text = soup.find_all('title')
print(title_text)

実行したところ問題無くtitleタグが出力されました。

[<title>高頻度(地震火山)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>火山の状況に関する解説情報</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報(定時)</title>, <title>降灰予報( 定時)</title>, <title>震源・震度に関する情報</title>]

参考:RequestsとBeautiful Soupでのスクレイピング時に文字化けを減らす

チラ裏程度のメモですが、Pythonで今後何かしら作っていくこともあると思うので備忘録です。
実際にやりたいプログラムが完成したら改めて記事にします。
NO IMAGE
最新情報をチェックしよう!