日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2025/4/16 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 3读网页文件及保存成本地文件,遇到的编码问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用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()讀出來(lái)的東西是bytes類型的,不是str,不信可以試試type(s)。可以用s.decode(“utf-8”)來(lái)將其轉(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)制文件,只不過(guò)對(duì)于所謂的文本文件,電腦自動(dòng)用了某種編碼方式翻譯了該二進(jìn)制文件。所以對(duì)h2.html寫入二進(jìn)制,與寫入字符其實(shí)是一樣的,當(dāng)寫入字符時(shí)還需要將其解碼成二進(jìn)制。python的文件IO其實(shí)就是把這個(gè)過(guò)程隱藏起來(lái)了而已。

其實(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)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。