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')