python 3读网页文件及保存成本地文件,遇到的编码问题
用python做網(wǎng)頁(yè)爬蟲,會(huì)要用到讀網(wǎng)頁(yè)文件,python可以想讀本地文件那樣讀網(wǎng)頁(yè)文件
讀網(wǎng)頁(yè)文件,要用到urllib.request包中的文件,因此需要首先導(dǎo)入
import urllib.request然后打開一個(gè)網(wǎng)頁(yè)。
infile = urllib.request.urlopen("http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/text-methods.html")網(wǎng)頁(yè)的地址必須要加“http://“
讀網(wǎng)頁(yè)文件。read()讀出來的東西是bytes類型的,不是str,不信可以試試type(s)。可以用s.decode(“utf-8”)來將其轉(zhuǎn)成str類型,之所以用utf-8,是因?yàn)橐话愕木W(wǎng)頁(yè)文件都是utf-8這個(gè)編碼的
s = infile.read()這個(gè)infile不需要close()
如果想把這個(gè)網(wǎng)頁(yè)文件保存到本地,可以直接用二進(jìn)制的編碼方式打開一個(gè)本地文件,然后寫入s就可以了
outfile = open("h2.html", "wb") outfile.write(s) outfile.close()打開h2.txt,你會(huì)發(fā)現(xiàn)跟網(wǎng)頁(yè)文件一樣。為什么會(huì)這樣了?h2.html用二進(jìn)制方式寫入的,應(yīng)該是二進(jìn)制文件啊,怎么是文本文件呢?
其實(shí)在電腦中,所謂二進(jìn)制文件和文本文件,其實(shí)本質(zhì)都是一樣的,都是二進(jìn)制文件,只不過對(duì)于所謂的文本文件,電腦自動(dòng)用了某種編碼方式翻譯了該二進(jìn)制文件。所以對(duì)h2.html寫入二進(jìn)制,與寫入字符其實(shí)是一樣的,當(dāng)寫入字符時(shí)還需要將其解碼成二進(jìn)制。python的文件IO其實(shí)就是把這個(gè)過程隱藏起來了而已。
其實(shí)你這樣試一試
outfile = open("h1.txt", "wb") s1 = bytes([65, 66, 67]) outfile.write(s) outfile.close()輸出應(yīng)該是
ABC與你用
outfile = open("h1.txt", "w") s1 = "ABC" outfile.write(s) outfile.close()是一樣的
總結(jié)
以上是生活随笔為你收集整理的python 3读网页文件及保存成本地文件,遇到的编码问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: tkinter绑定鼠标滚轮滚动事件
- 下一篇: python 画希尔伯特曲线
