用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()
是一样的