##################错误代码##########
#从网址库找到request库,使用urlopen函数打开网址
from urllib.request import urlopen
url = "http://www.mouwangzhi.com"
resp = urlopen(url)
with open("mybaiodu.html",mode = "w",encoding="utf-8") as f:
f.write(resp.read().decode())
print("over!")
pycharm读取保存的html文件会显示乱码,首先我们需要查看这个文件使用记事本打开是否是乱码,我打开的并不是乱码,很明显是pycharm的问题。 从报错第一行我们可以知道这个网页的数据是utf-8格式的。同时查看pycharm编译器右下角文件打开格式,也是UTF-8,看起来并没有什么问题,修改setting里面editor的格式还是无法纠正错误,那就要看看你的代码有没有问题了! 比如你是这样创建打开并保存文件的
##################错误代码##############
with open("mybaiodu.html",mode = "w") as f:
f.write(resp.read().decode("utf-8"))
print("over!")
这就不对了呀,decode函数里面并没有接收数据格式的参数,接收格式数据的参数在函数open里面!所以要将程序改成如下
##################修改后代码##############
with open("mybaiodu.html",mode = "w",encoding="utf-8") as f:
f.write(resp.read().decode())
print("over!")
针对格式问题,首先我们需要了解数据本身的格式A,我们接收过来保存的格式B,我们以格式C打开他。ABC相同,操作它就不会出现问题了。
例如这个报错
'gbk' codec can't encode character '\u200b' in position 158428: illegal multibyte sequence
#'gbk'编解码器不能编码字符' u200b'在位置158428:非法多字节序列
这个说的很清楚了,编解码器不能编码,这是pycharm的问题。解决步骤如下: file–>setting–>editor–>filecodings
如有错误感谢指正!
|