python 3.2 urllib.request请求百度首页,得到的结果用各种编码都是乱码,为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 3.2 urllib.request请求百度首页,得到的结果用各种编码都是乱码,为啥?相关的知识,希望对你有一定的参考价值。

import urllib.request
import socket
socket.setdefaulttimeout(60)
charcode="utf-8"#编码格式,能想到的几种都试过了
url="http://www.baidu.com"
req = urllib.request.Request(url)
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (Khtml, like Gecko) Chrome/21.0.1180.83 Safari/537.1")
req.add_header("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
req.add_header("Accept-Charset",charcode)
result=urllib.request.urlopen(req)
data=result.read()
print(data.decode(charcode))#能想到的几种编码都试过了,都是乱码,有些还报错
result.close()

错误信息:
Traceback (most recent call last):
File "D:\right.zhang\Work\Source\Python\functiontest.py", line 14, in <module>
print(data.decode(charcode))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 101: invalid start byte

这是这么回事,获取到的数据不完整吗?

参考技术A data不是utf8编码的,至少第一个字节不是合法的utf8编码;追问

我想知道的这是 为什么,以及如何解决,多谢!

追答

print(data.decode(charcode, 'ignore'))

这样吧
刚看了下,貌似不是什么重要的内容不能ignore

本回答被提问者和网友采纳
参考技术B 用python2.7 吧,应为好多第三方的模块好多不支持python3.
html=html.decode('utf-8','ignore').encode('utf-8')

html =html_1.decode('gb2312','ignore').encode('utf-8')

python2.7上是这么办的。

Python代写,Python作业代写,代写Python,代做Python

Python代写,Python作业代写,代写Python,代做Python

我是一线IT企业程序员,目前接各种代码代写业务:

  • 代写C语言、代做C语言、C语言作业代写、C语言代写
  • 代写C++、代做C++、C++作业代写、C++作业代写
  • 代写Python、代做Python、Python作业代写、Python作业代做
  • 代写Java、代做Java、Java作业代写、Java作业代做
  • 代写编程作业、代做编程、编程代写、编程代做

先写代码再给钱,不要任何定金!价钱公道,具体见图,诚信第一!(涉及图形化界面、或领域类知识如金融数学等暂时无力)

(截止2017-4-23 共顺利完成65单! 完整的成功交付的聊天记录在此:http://leechan8.lofter.com

微信:leechanx
技术分享

部分成功交付记录节选

截止2017-4-23 共完成65单!

 

部分成交记录截图:

2017-4-22:美国留学生,Python大作业(一天完成) 
技术分享

2017-4-19,美国留学生,Python作业(一天完成) 
技术分享

2017-4-10,留学生,Python大作业(2天完成) 
技术分享

2017-3-29,Python作业(半小时写完) 
技术分享







以上是关于python 3.2 urllib.request请求百度首页,得到的结果用各种编码都是乱码,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

python中urllib.request对象案例

爬虫小探-Python3 urllib.request获取页面数据

Python 3.5 urllib.request 403 禁止错误

urllib.request.Request

Python爬虫--Urllib库

[Python系列-19]:爬虫 - urllib.request.urlopen()和urllib.request.get()的使用区别