Python3 Requestsとpyqueryと文字コード

PythonRequestsで取得したデータをpyqueryに渡す。

Webサイトによっては、文字コード指定がうまくいかないのか、 requests.getのレスポンスresres.textすると文字化けする。

このresをそのままpyqueryに渡すと、やはりこちらでも文字化けする。 そういうときは大体、以下からわかるように、

>>> res.encoding
'ISO-8859-1'

というエンコーディングが指定されている。調べると、ラテンアルファベットの文字コード標準だそうだ。 res.encoingに適切な文字コードを指定すればいい。 幸い、Requestsには、res.contentの内容から文字コードをchardetを使って推定してくれる、 res.apparent_encodingというプロパティがある。これを利用して、

>>> res.apparent_encoding
'utf-8'
>>> res.encoding = res.apparent_encoding
>>> res.text
...  # 文字化けしなくなる

とすれば適切なエンコーディングが行われる。この指定を行ってから、pyqueryに渡せば、

>>> d = pq(res.text)
>>> d.text()
...  # こちらも文字化けしない

文字化けしなくなる。


こちらもどうぞ。

タイトルとURLをコピーしました