1. ホーム
  2. Python

Python3 はエンコーディングの問題を解決します: UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position

2022-02-19 18:21:46
<パス

元のブログ記事へのリンクです。 http://www.aobosir.com/blog/2016/12/08/python3-UnicodeEncodeError-gbk-codec-can't-encode-character-xa9/。


開発環境

  • Pythonサードパーティライブラリ: lxml, Twisted, pywin32, scrapy
  • Pythonバージョン: python-3.5.0-amd64
  • PyCharmソフトウェアバージョン: pycharm-professional-2016.1.4
  • コンピュータのシステム Windows 10 64ビット

開発環境をまだ構築していない方は このブログの記事 .


Scrapyを使ってクローラープロジェクトを書く際、ある中国のウェブサイトをクロールして、DOSターミナルでクロールしたページのソースコードを印刷すると、様々なエンコーディングエラーが発生します。

クロールされたターゲットURL http://blog.csdn.net/github_35160620/article/details/53353672

エラーで表示されるコード。

    def next(self, response):
        body_data = response.body.decode('utf-8', 'ignore')
        print(body_data)
        pass

実行:対応するクローラープロジェクトのパスに来て実行する。

scrapy crawl crawler name

表示されるデバッグメッセージに、コーディングエラーがあることがわかります。

    print(body_data)
UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 6732: illegal multibyte sequence

見てみると、この u'xa9' ユニコード・エンコーディングで表現される文字は © .

このエラーの解決策として考えられるのは

上記のコードを修正します。

    def next(self, response):
        body_data = response.body.decode('utf-8', 'ignore').replace(u'\xa9', u'')
        print(body_data)
        pass

次にプログラムを実行します。 scrapy crawl crawler name --nolog となり、上記のコーディングエラーはなくなりました。クロールされたページのソースコードが正常に出力されています。


ご訪問ください。 http://www.aobosir.com/