0

私は Python2.6 を使用しており、リクエスト モジュールと文字エンコーディングに多くの問題があります。

最も単純な形式に煮詰めた、これが私のコードと結果のエラーです(私の問題を引き起こしている実際のサイトを含む):

import requests

sites = ['www.ddelectricmotors.com', 'www.stearnswood.com']
for domain in site:
 r = requests.get( 'http://' + domain )
 f = open( domain, 'w' )
 f.write( r.text )
 f.close()

DDElectric Motors のページは正常に読み込まれ、保存されますが、Stearnswood の試行では次のエラーが発生します。

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 13186: ordinal not in range(128)

理想的には、ASCIIを好むように見えるscikit-learnにロードしているため、ASCIIへのエンコーディングを強制することを好みます。不明な文字を削除するだけで問題ありません。

4

1 に答える 1

2

Unix ファイルにはバイトが含まれており、rオブジェクトのtext属性はコードポイント文字列のように見えるため、Unix を使用している場合は代わりにf.write(r.text.encode('UTF-8')).

より大きな問題は、セキュリティで保護されていないチャネルを介して取得されたインターネットからの無害化されていないデータを、自動化されたプロセスでファイルに書き込むことです。そのファイルの使用方法には十分注意してください。サイトを信頼する場合は、少なくとも HTTPS の使用を検討してください。

于 2012-11-20T23:47:03.320 に答える