PythonのRequestsライブラリを使用して日本語ページを取得するとき、文字化けが発生することがあります。特にページのエンコードがShift-JISの場合にこの問題が起こりやすいです。
import requests
response = requests.get('適当な日本語ページ')
print(response.encoding)
上記のコードを実行すると、ISO-8859-1
が返ってくることがあります。これは、文字コードがうまく取得できない場合にRequestsライブラリがデフォルトで設定するエンコードです。
この問題を解決するためには、response.encoding
をresponse.apparent_encoding
に設定します。apparent_encoding
を呼び出すと、Requestsライブラリは内部的にchardetライブラリを使用して適切な文字コードを判定します。
import requests
response = requests.get('適当な日本語ページ')
response.encoding = response.apparent_encoding
この方法で、文字化けを防ぐことができます。
また、POSTリクエストを送信する際には、パラメータに文字列を渡す場合はエンコードする必要があります。例えば、以下のように"あ"
をエンコードしてPOSTリクエストを送信します。
requests.post("https://httpbin.org/post", data="あ".encode("utf-8"))
これらの方法を使用することで、PythonのRequestsライブラリを使用して日本語を扱う際の文字化けを防ぐことができます。.