python 3读网页文件及保存成本地文件,遇到的编码问题

用python做网页爬虫,会要用到读网页文件,python可以想读本地文件那样读网页文件

读网页文件,要用到urllib.request包中的文件,因此需要首先导入

import  urllib.request

然后打开一个网页。

infile = urllib.request.urlopen("http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/text-methods.html")

网页的地址必须要加“http://“

读网页文件。read()读出来的东西是bytes类型的,不是str,不信可以试试type(s)。可以用s.decode(“utf-8”)来将其转成str类型,之所以用utf-8,是因为一般的网页文件都是utf-8这个编码的

s = infile.read()

这个infile不需要close()

如果想把这个网页文件保存到本地,可以直接用二进制的编码方式打开一个本地文件,然后写入s就可以了

outfile = open("h2.html", "wb")
outfile.write(s)
outfile.close()

打开h2.txt,你会发现跟网页文件一样。为什么会这样了?h2.html用二进制方式写入的,应该是二进制文件啊,怎么是文本文件呢?

其实在电脑中,所谓二进制文件和文本文件,其实本质都是一样的,都是二进制文件,只不过对于所谓的文本文件,电脑自动用了某种编码方式翻译了该二进制文件。所以对h2.html写入二进制,与写入字符其实是一样的,当写入字符时还需要将其解码成二进制。python的文件IO其实就是把这个过程隐藏起来了而已。

其实你这样试一试

outfile = open("h1.txt", "wb")
s1 = bytes([65, 66, 67])
outfile.write(s)
outfile.close()

输出应该是

ABC

与你用

outfile = open("h1.txt", "w")
s1 = "ABC"
outfile.write(s)
outfile.close()

是一样的

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值