質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

584閲覧

python requestsで取得したtextが文字化けする

blendegg

総合スコア81

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/06/02 20:46

###概要
requestsで取得した文字が文字化けします。大抵のサイトは大丈夫なのですが、特定のアダルトサイトなどで文字化けます、

調べた解決法として文字コードをセットする方法と、apparent_encodingで文字コードを自動判定する方法を試しましたが、改善はありません。

###コード1

URL = 'url' data = requests.get(URL) data.encoding = 'UTF-8' print(data.text)

###コード2

URL = 'url' data = requests.get(URL) data.encording = data.apparent_encoding print(data.text)

###知りたいこと
1他の手段はありますか?
2そもそも、原因を特定する方法はありますか?

よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2019/06/03 01:04 編集

はずかしいかもしれませんが、状況の再現するサイトを貼っていただかないとなんともいえません。
hayataka2049

2019/06/03 01:19

質問文でdata.encordingってなっているのはタイプミスですか?
hayataka2049

2019/06/03 01:23

あ、たしかに規約に引っかかりますね。URLはコメント編集して消しておいた方が良いかもしれません。というか貼らせてしまってごめんなさい。
blendegg

2019/06/03 01:43

削除依頼出しました。すみません。 encodingはミスです。正しい記述でも文字バケは発生します。
guest

回答1

0

ベストアンサー

2そもそも、原因を特定する方法はありますか?

HTMLのソースを開けば、一例ですが

html

1<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

のような記述があるので、指定している文字コードがcharset=...の部分と食い違っていたらサイトのソース通りのものにすれば改善される場合があります。

投稿2019/06/03 01:14

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

blendegg

2019/06/03 01:38

回答有り難うございます。headのソースを見る限りでは文字コードの指定はされていません。このような場合はどうするのでしょうか?
hayataka2049

2019/06/03 02:44

元のテキスト(期待される出力)と文字化けした出力を貼ってみていただけますか?(性的にならない部分で)
blendegg

2019/06/03 02:59

回答ありがとうございます。以下が文字バケ部分です。例のサイトのトップページ部分です。サイトにリンクせずにサイト名だけいえばよかったですね。 文字数が多すぎてすべて貼れないので、上部だけです。 �L��9�ڭ��d k���iwo_=\�E╝L�QEU1HB�DD 4��_��c{4�3� �f�0��Wp��daq{�� �Xl XT$3n�'�M�&����O܉@>�s�cv����{��═�L�[,��۔��� h��)mA�p�~�═o��`�|�E �8 ~ԍ���C�5�U�L^�'�w�Ic��l║����N�T��O�)JX���QF�E��%��C"�� ��╚@� &ݨ���/�H�� 3���� oC�m�d���3킗I��k5��aJ]��jq+k�A ���v9&�hf�G��@AR ��"�q�╚@�AP�(������mΡ��k���p��^k����[�H�.���n�d�k��+���\�j� ╗��b0���j�O��/�/A�����w�W�]V�Y��ſ��ޞ����=?�Xz����8��|�酟tC�g �aLE� F2�� �3;��7I���(UkK�nt��š�ͻM/I�^(��M�p2�����A�\�n%�{wt����0?� - =W��%eF��Y�%|�uZ�o��&╗ٔ����D-��h3���W_$�kކ���E�[ ������:Rٍ ��H hɸ�� �`��T����ڵY�5`����4�v�^���VM#?̀d�C���-�Y������c� ]&�� ��)�)v��Ĭu��╝�w ��䛙����"╝PTI╔║JR��║�t �rv=������ʽ�q�╗║Ş�u�ɧ^ �0jA:�]8P@�( |�c�(� ��ue{��nzWqö�%z�Ng�Q�s�ݏ.WLǗ��r-Sz�*~;ْ~����0�.�C ╝ �G~║?��~qc�═X�M��B��>���DZB˵ͧ�n��a�Qr��^�ӡg�C���6��W� ��ɔ╝�ArN�� J��[&q��'�5���k�s�M�I��*�_!�*)�6�╝ )E�ڃ��═�A]║@�տ ,�� �.����:� �� %��h/��͟�o� fZ�2�d`�[��'�ݴs�'�O��r���'�@:P��X�����G��[�LL���=��� �W?f�WG�w"�w�z�@f��o�fv��$4�2� 1��Α��d���b�9U����]7 ؁}�[�p����a|=��%U�r�g[Ɣ�4?t�_!�A$�;|�WA���Ⓩ ��Tfk?��&2�KJ4Q═9>�\kL�u�NQ�s?gf�o�b�OAUl��(,���A �9y��=p��Z����!��G'� ;qPj�X�*/T͜8n%═�Ы���3c�+�nS╝��"�i�?)�ʖŠr%��r[��r�����`�l���A�kGY�� ╔ Ro4�J�JB�$ݡ"�e�@�!7�═�������|��/�,}��EO⛟?p W�.*�i��h k��V�'ĮR�u?��y���D@VE�� ╝\��c-�n�?oOlxOt���P�m ��)��#��.)���xb��k �z�� � ]��� t!��?�/�7���� 2~b��?|� �;�(�7���h*║�S�����╗�����Q �,��Ӊ�9�;_����x5,7+��߲�ķ �JP ╔Qe�P颃d u�,�I$���0ek��6[���<W�ɶ��@���_?�a=��Y�� !gy���G��Y������fqd�ħ╔�ޣ �║���v(�o��wA�h��A�=�#֍g�ڎ�Z�DJ�d*�䓉�P�=�LD�╚(ٙ�]����h═� z��╗��
hayataka2049

2019/06/03 04:15

data = requests.get(URL, headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; NP06; rv:11.0) like Gecko"}) に書き換えると取れます。ちなみに、こうしなかった場合に返っているのはJPEG画像のデータです。 今回はこれ以上の説明は一切避けたいと思います。こういうこともある、ということで・・・
blendegg

2019/06/03 06:39

弾かれているから偽装したということでしょうか? ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問