某些字符无法解码,并替换为替换字符

问题描述 投票:0回答:2

我已经用Python编写了大约3个月的代码,我正在尝试为类项目“ https://www.countyhealthrankings.org/app/alabama/2019/rankings/outcomes/”进行一些网络测试。但是,当我尝试提取html站点时出现错误,“某些字符无法解码,并被替换字符替换。”我尝试了几种不同类型的解码,但是没有运气。我正在使用的代码如下。任何帮助将不胜感激。

代码:

myurl = "https://www.countyhealthrankings.org/app/alabama/2019/rankings/outcomes/"
website = uReq(myurl)
website_html = website.read() #.decode(encoding="iso-8859-1")
print(website_html)
print(type(website_html))
website.close()
site_soup = soup(website_html,"html.parser")#, from_encoding="utf-8)
print(type(site_soup))

html输出将如下所示:

�}WI.��s��y��-H,��`m���6����� 5�J�Řf����ȭJ%!��r���cTU�DFFDƖ�����?y������۾W,��9����� ��y7����5ju���N���{�

数据的字节版本将如下所示:

\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xec}\xf9W\x1bI\xb2\xee\xefs\xce\xfb\x1f\xca\xeay\x83\xfd\x0
python html web-scraping decoding
2个回答
0
投票

该站点使用gzip传输编码,并且您的http客户端未对其进行解码。

>> from urllib import request
>>> import gzip
>>> res = request.urlopen(url)
>>> content = res.read()
>>> content[:25]
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xec}\xf9W\x1bI\xb2\xee\xefs\xce\xfb\x1f\xca\xea'

>>> print(res.headers)
...
Content-Encoding: gzip
Content-Language: en
Content-Type: text/html; charset=utf-8
...
>>> decompressed = gzip.decompress(content)
>>> decompressed[:25]
b'<!DOCTYPE html>\n<!--[if l'

requests程序包自动处理此问题>

>>> import requests
>>> r = requests.get(url)
>>> r.text[:25]
'<!DOCTYPE html>\n<!--[if l'

0
投票

我无法重现您的错误,但这是使用请求包的有效版本:

© www.soinside.com 2019 - 2024. All rights reserved.