Al rastrear una página web, los datos se pueden eliminar y se informará un error durante el análisis final:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 712: invalid start byte
Significa que al analizar, se produce un error cuando se analizan 712 caracteres utilizando el formato de codificación utf8. Vaya a la página web original F12 e ingrese: document.charset en la consola. El resultado devuelto es GBK, lo que indica que el formato de codificación de la web La página es GBK, por lo que el análisis de clase GBK debe usarse en Python. El hiper que uso aquí es utf8 por defecto. Agregué parámetros para evitar que el hiper se analice por mí:
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)
Puede agregar decodificación (codificación = 'UTF-8', errores = 'ignorar') a los datos de lectura de respuesta, analizarlos en utf8 y omitir el lugar del error:
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')
Pero es mejor analizarlo de acuerdo con los datos de la página web original, es decir, convertirlo a 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')