PythonのRequestsで取得したデータをpyqueryに渡す。
Webサイトによっては、文字コード指定がうまくいかないのか、
requests.getのレスポンスresでres.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()
... # こちらも文字化けしない
文字化けしなくなる。
こちらもどうぞ。
Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-
posted with amazlet at 18.09.21
加藤 耕太
技術評論社
売り上げランキング: 5,263
技術評論社
売り上げランキング: 5,263



コメント