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

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

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

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Python

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

Q&A

解決済

2回答

1992閲覧

Pythonのrequests.getでの文字化けと文字コードについて

退会済みユーザー

退会済みユーザー

総合スコア0

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Python

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

0グッド

0クリップ

投稿2019/07/06 10:34

Pythonでrequests.getで文字化けが起こってしまいます。

Python

1import requests 2 3r = requests.get("https://www.homepage-maker.jp/") 4print(r.encoding)

このモジュールを実行すると、

Python

1b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="jp" lang="jp">\n\n<head>\n<!-- Global site tag (gtag.js) - Google Analytics -->\n<script async src="https://www.googletagmanager.com/gtag/js?id=UA-4903005-4"></script>\n<script>\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag(\'js\', new Date());\n\n gtag(\'config\', \'UA-4903005-4\');\n</script>\n\n<meta http-equiv="content-type" content="text/html;charset=UTF-8" />\n<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">\n<title>\xe5\x88\x9d\xe5\xbf\x83\xe8\x80\x85\xe3\x81\xae\xe3\x81\x9f\xe3\x82\x81\xe3\x81\xae\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xa0\xe3\x83\x9a\xe3\x83\xbc\xe3\x82\xb8\xe3\x81\xae\xe4\xbd\x9c\xe3\x82\x8a\xe6\x96\xb9 [\xe6\xb1\xba\xe5\xae\x9a\xe7\x89\x88]</title>\n<meta name="description" content="\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xa0\xe3\x83\x9a\xe3\x83\xbc\xe3\x82\xb8\xe3\x81\xae\xe5\x88\x9d\xe5\xbf\x83\xe8\x80\x85\xe3\x81\xab\xe5\xbf\x85\xe8\xa6\x81\xe3\x81\xaa\xe6\x83\x85\xe5\xa0\xb1\xe3\x82\x92\xef\xbc\x95\xe3\x83\x9a\xe3\x83\xbc\xe3\x82\xb8\xe3\x81\xab\xe3\x81\xbe\xe3\x81\xa8\xe3\x82\x81\xe3\x81\xbe\xe3\x81\x97\xe3\x81\x9f\xe3\x80\x82\xe3\x81\x9f\xe3\x81\xa3\xe3\x81\x9f10\xe5\x88\x86\xe3\x80\x81\xe7\x9b\xae\xe3\x82\x92\xe9\x80\x9a\xe3\x81\x99\xe3\x81\xa0\xe3\x81\x91\xe3\x81\xa7\xe3\x80\x8c\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xa0\xe3\x83\x9a\xe3\x83\xbc\xe3\x82\xb8\xe3\x81\xae\xe4\xbd\x9c\xe3\x82\x8a\xe6\x96\xb9\xe3\x80\x8d\xe3\x82\x92\xe7\x90\x86\xe8\xa7\xa3\xe3\x81\xa7\xe3\x81\x8d\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82" />\n<meta name="keywords" content="\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xa0\xe3\x83\x9a\xe3\x83\xbc\xe3\x82\xb8,\xe4\xbd...

本来なら普通に読める日本語が文字化けしてしまいます。
ですので、コードの中に

Python

1response.encoding = response.apparent_encoding

を挿入して、

Python

1import requests 2 3r = requests.get("https://www.homepage-maker.jp/") 4response.encoding = response.apparent_encoding 5print(r.content) 6

として実行するとエラーが出てしまいます。

Python

1Traceback (most recent call last): 2 File "test1.py", line 4, in <module> 3 response.encoding = response.apparent_encoding 4NameError: name 'response' is not defined

他の方法も試してみたのですが、全く文字化けが解消されません。

文字化けをどうすれば治せるか分かる方いらっしゃいますか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

r.contentではなくr.textを利用するようにするとよいです。

Python

1import requests 2 3r = requests.get("https://www.homepage-maker.jp/") 4enc = r.apparent_encoding 5#print(enc) # utf-8 6r.encoding = enc 7print(r.text) 8

投稿2019/07/06 11:16

can110

総合スコア38262

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

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

退会済みユーザー

退会済みユーザー

2019/07/06 13:50

ありがとうございました!無事解決できました。
guest

0

contentはバイナリ形式で保存するものです
textを使いましょう
また、エラーについてはただ単に定義名を変更していないだけです

Python

1import requests 2 3response = requests.get("https://www.homepage-maker.jp/") 4response.encoding = response.apparent_encoding 5print(response.text)

投稿2019/07/06 11:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問