Python报错:UnicodeDecodeError: 'utf8'コーデックは位置712のバイト0xa4をデコードできません:無効な開始バイト

        Webページをクロールすると、データが削除される可能性があり、最終的な分析中にエラーが報告されます。

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 712: invalid start byte

        これは、解析時に、utf8エンコード形式を使用して712文字を解析するとエラーが発生することを意味します。元のWebページF12に移動し、コンソールに「document.charset」と入力します。返される結果はGBKであり、Webのエンコード形式を示します。ページはGBKであるため、PythonでGBKクラス分析を使用する必要があります。ここで使用するハイパーはデフォルトでutf8です。ハイパーが解析されないようにパラメーターを追加しました。

conn = HTTPConnection('www.hkex.com.hk:443')

conn.request('GET', '/chi/stat/smstat/dayquot/d210219c.htm', None, None)
resp = conn.get_response()
s = resp.read(decode_content=False)

        応答読み取りデータにdecode(encoding = 'UTF-8'、errors = 'ignore')を追加し、それをutf8に解析して、エラーの場所をスキップできます。

conn = HTTPConnection('www.hkex.com.hk:443')

conn.request('GET', '/chi/stat/smstat/dayquot/d210219c.htm', None, None)
resp = conn.get_response()
s = resp.read(decode_content=False).decode(encoding='UTF-8', errors='ignore')

        ただし、元のWebページのデータに従って解析する、つまりGBKに変換するのが最善です。

conn = HTTPConnection('www.hkex.com.hk:443')

conn.request('GET', '/chi/stat/smstat/dayquot/d210219c.htm', None, None)
resp = conn.get_response()
s = resp.read(decode_content=False).decode(encoding='GBK', errors='ignore')

 

おすすめ

転載: blog.csdn.net/qq_41061437/article/details/113988940