写python爬虫,做下载器时,发现部分网页(一部分可以)无法通过decode('utf-8)去解码,查看网页,网页却是有这句,说明是UTF-8编码,为何无法解码?
部分网页解码失败的错误代码:
Traceback (most recent call last):
File "E:/python爬虫/test.py", line 13, in
print(data.decode('utf-8'))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
这里是我获取html数据并进行解码的相关代码:
url = 'http://wiki.52poke.com/wiki/%E8%B7%AF%E5%8D%A1%E5%88%A9%E6%AC%A7'
req = urllib.request.Request(url)
res = urllib.request.urlopen(req)
data = res.read()
print(data)
print(data.decode('utf-8'))
输出(这里是解码失败的网页的data数据输出的结果)(这里只贴出部分,太多了)
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xed\xbdys\x1bG\x96/\xfa\xf7\xe8S\xa0\xe1\xcbi{\xc6\xd8wJB\x07 Q\xe3~\xaf\xdd\xa3\xb1=3vx\xfa9@\xa2D\xa2\x05\x02\xb8\x00\xa8\xc5=\xfd\x02\x94Lq\'\xb5P\xd4Bj\xa1,J\xd4FR\x12-q\x15#\xde\xfd&\x16\xaa\x00\xc4\xbd\x11\xfe\n\xef\x9c\xcc\xaaBU\xa1\xb0\x14\tR\x90\x94\x9e\x1e\xb1\x90U\x95u2\xf3\xe4\xd9\xf2\xe4/\x0f\xfd\xee\xe8\xbf\x1e\xf9\xe6\xbb\xe3\x1d\xa6\x9elo
输出(解码成功的网页的代码)
b'\n\n\n\n\xe6\x80\xaa\xe6\xb2\xb3\xe9\xa9\xac - \xe7\xa5\x9e\xe5\xa5\x87\xe5\xae\x9d\xe8\xb4\x9d\xe7\x99\xbe\xe7\xa7\x91 \n\n
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你失败的那部分看起来不像任何编码,可能是二进制数据?
返回的数据被gzip过,你应该先解压。既然你写爬虫都懂得用BeautifulSoup了,为什么不用requests替代urllib。