こんにちは、ミナピピン(@python_mllover)です。
仕事でAppStoreのアプリレビューのスクレイピングでAPIのURLを叩くとレスポンス以下のように文字化けしていました。
よくある解決手段の引数にerror=’ignore’ を追加してエンコードエラーを無視しても解決せず途方にくれました。
res = requests.get('https://itunes.apple.com/jp/rss/customerreviews/page=6/id=1205990992/sortby=mostrecent/xml?urlDesc=/customerreviews/id=1205990992/json') print(res.apparent_encoding)
ちなみにエンコード方式を確認すると「Windows-1254」という見慣れぬ方式。。。
解決法
解決法は以下の1行をはさんであげると解決します。
res.encoding = "utf-8"
これでres.textを叩くと以下のようになって文字化けを解消されています。
2018-08-21T23:24:17-07:00 3097932899 iOS10で使用している有料ユーザーです。 3カ月程前から、チャートの更新に失敗するようになりました 初めの一回、銘柄一覧をクリックして、チャートを表示させる一回目だけはチャートが出ますが、2回目に違う銘柄や、違う時間足に変更した時に、ローソク足が全て消えたままになるだけでなく、y軸の価格も更新されないまま3分近く何も見れません。 3分以上経つと、表示されることがあります。これはwifi環境でも同じです。 他に報告がないのでiOS10のせいかも知れないですが、チェックできず困っています PC版は正常に作動しております
ちなみに取得したレスポンスをBeautifulSoupで解析したい場合は文字化けは無視してres.contentでぶち込めばに問題なくパースできます。
関連記事:【Python】BeautifulSoupでスクレイピングしたhtmlが文字化けしたときの解消法
関連記事:【Python】「Beautiful Soup」でスクレイピングしたhtmlデータを解析する
参照:https://qiita.com/yuji38kwmt/items/944ec562253c856ed375
コメント