|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 night119110 于 2018-8-11 20:37 编辑
先贴代码,疑问在代码之后
fishurl='https://ilovefishc.com/'
#代码一
import requests
response=requests.get(fishurl)
response.encoding='utf-8'
html=response.text
print(html)
'''
#代码二
import urllib.request
response = urllib.request.urlopen(fishurl)
html = response.read().decode('utf-8')
print(html)
'''
疑问
1.代码一中导入的requests库,使用decode与encode都会出现乱码,只有使用encoding才会正常显示这是为什么?
2.encoding的作用是什么,和encode有什么区别,还是说在requests库中才会用encoding?
3.代码二中导入的urllib.request库,代码是按照小甲鱼视频中的代码照着打的,可以正常显示,如果换成其他直接显示字节不能被如何如何
下面是关于疑问3在网上查的解释
字符串在Python内部的表示是unicode编码,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘utf-8’),表示将unicode编码的字符串str2转换成utf-8编码。
decode中写的就是想抓取的网页的编码,encode即自己想设置的编码
看了这个解释,个人一点点理解,如果爬取的网页不进行解码操作,很有可能出现乱码,只有将原网页利用decode转换成unicode,因为python默认是unicode,所以才会正常显示,不知道这样理解是不是正确的。。。
如果在疑问3上的理解是正确的话,那么就有了1和2的疑问,为什么不是用decode进行转换而是用encoding?
请各位大神指点
https://fishc.com.cn/thread-56452-1-1.html
这个帖子说的很详细,Python编码问题的解决方案总结
|
|