[英]Python - decode ('utf-8') issue
我是 Python 的新手。请帮我解决这个问题。
我正在尝试从以下链接获取收入:
我正在使用以下命令:
重新进口
导入 urllib.request
data=urllib.request.urlopen(url).read()
data1=data.decode("utf-8")
问题:
UnicodeDecodeError:“utf-8”编解码器无法解码位置 10798 中的字节 0xa0:起始字节无效
也许更好的请求:
import requests
url = "https://www.google.co.in/?gfe_r...."
req = requests.get(url)
req.encoding = "utf-8"
data = req.text
下载问题中给出的特定 URL 的结果是 HTML 代码。 在使用以下 Python 代码获取数据后,我能够使用 BeautifulSoup 抓取页面:
import requests
url = "https://www.google.co.in/?gfe_rd=cr&ei=kFFsWYyPEqvM8AeF7Y2IDQ&gws_rd=ssl#q=adp+revenue&stick=H4sIAAAAAAAAAOPgE-LUz9U3MMkozijTUskot9JPzs_JSU0uyczP088vSk_My6xKBHGKrYpSy1LzSlMBIRiSrDMAAAA&spf=1500270991898"
response = requests.get(url)
data = response.content.decode('utf-8', errors="replace")
print (data)
请注意,我在代码示例中使用了 Python3。 print()
的语法可能略有不同。
0xa0
或 unicode 符号 U+00A0 是字符 NO-BREAK SPACE。 在 UTF8 中,它表示为b'\xc2\xa0'
。 如果您发现它是原始字节,则可能意味着您的输入不是 UTF8 编码而是 Latin1 编码。
快速浏览一下链接页面就会发现它确实是 latin1 编码的——但我得到的是法语版本……
当您不确定确切的转换时,规则是使用替换错误处理:
data1=data.decode("utf-8", errors="replace")
然后,所有违规字符都将替换为替换字符 (U+FFFD)(显示为 �)。 如果只找到几个,则说明该页面包含错误字符,但如果几乎所有非 ascii 字符都被替换,则说明编码不是 UTF8。 如果西欧语言通常是 Latin1,但您的里程可能因其他语言而异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.