最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python抓取網(wǎng)頁時(shí)字符集轉(zhuǎn)換問題處理方案分享

 更新時(shí)間:2014年06月19日 09:45:07   投稿:hebedich  
python學(xué)習(xí)過程中發(fā)現(xiàn)英文不好學(xué)起來挺困難的,其中小弟就遇到一個(gè)十分蛋疼的問題,百度了半天就沒找到解決辦法~囧~摸索了半天自己解決了,記錄下來與君共勉。

問題提出:

    有時(shí)候我們采集網(wǎng)頁,處理完畢后將字符串保存到文件或者寫入數(shù)據(jù)庫,這時(shí)候需要制定字符串的編碼,如果采集網(wǎng)頁的編碼是gb2312,而我們的數(shù)據(jù)庫是utf-8的,這樣不做任何處理直接插入數(shù)據(jù)庫可能會(huì)亂碼(沒測試過,不知道數(shù)據(jù)庫會(huì)不會(huì)自動(dòng)轉(zhuǎn)碼),我們需要手動(dòng)將gb2312轉(zhuǎn)換成utf-8。

首先我們知道,python里的字符默認(rèn)是ascii碼,英文當(dāng)然沒問題啦,碰到中文的時(shí)候立馬給跪。

不知道你還記不記得,python里打印中文漢字的時(shí)候需要在字符串前面加 u:

print u"來搞基嗎?"

這樣子中文才能顯示,這里面的u的作用就是將后面的字符串轉(zhuǎn)換為unicode碼,這樣中文才能得到正確的顯示。
這里與之相關(guān)的有一個(gè)unicode()函數(shù),用法如下

str="來搞基"
str=unicode(str,"utf-8")
print str

與u的區(qū)別是,這里用unicode將str轉(zhuǎn)換為unicode編碼,需要正確指定第二個(gè)參數(shù),這里的utf-8是我test.py腳本自身的文件字符集,默認(rèn)的可能是ansi。
unicode這是一個(gè)關(guān)鍵,下面繼續(xù)

我們開始抓取百度首頁,注意,游客訪問百度首頁,查看網(wǎng)頁源代碼,它的charset=gb2312。

import urllib2
def main():
  f=urllib2.urlopen("http://www.baidu.com")
  str=f.read()
  str=unicode(str,"gb2312")
  fp=open("baidu.html","w")
  fp.write(str.encode("utf-8"))
  fp.close()

if __name__ == '__main__' :
  main()

解釋:
我們首先用urllib2.urlopen()方法將百度首頁抓取到,f是句柄 ,用str=f.read()將所有源代碼讀入str中

搞清楚,str里面就是我們抓取的html源代碼,由于網(wǎng)頁默認(rèn)的字符集是gb2312,所以如果我們直接保存到文件中,文件編碼將是ansi。

對于大部分人來說,其實(shí)這就足夠了,但是有時(shí)候我就想把gb2312轉(zhuǎn)換成utf-8的該怎么辦呢?

首先:
    str=unicode(str,"gb2312") #這里的gb2312就是str的實(shí)際字符集,我們現(xiàn)在將其轉(zhuǎn)換成unicode

然后:
    str=str.encode("utf-8") #將unicode的字符串重新編碼成utf-8

最后:

    將str寫入到文件中,打開文件看一下編碼屬性,發(fā)現(xiàn)是utf-8的了,把<meta charset="gb2312"改成<meta charset="utf-8" ,就是一個(gè)utf-8的網(wǎng)頁了。做了這么多其實(shí)就完成了一個(gè)gb2312->utf-8的轉(zhuǎn)碼。


總結(jié):

    我們回顧一下,如果需要將字符串按照指定的字符集保存,有以下幾個(gè)步驟:

    1:用unicode(str,"原來的編碼")將str解碼成unicode字符串

    2:將unicode字符串str 使用 str.encode("指定的字符集") 轉(zhuǎn)換成你指定的字符集

    3:將str保存文件,或者寫入數(shù)據(jù)庫等操作,當(dāng)然,編碼你已經(jīng)指定了,不是嗎?

相關(guān)文章

  • tensorflow 用矩陣運(yùn)算替換for循環(huán) 用tf.tile而不寫for的方法

    tensorflow 用矩陣運(yùn)算替換for循環(huán) 用tf.tile而不寫for的方法

    今天小編就為大家分享一篇tensorflow 用矩陣運(yùn)算替換for循環(huán) 用tf.tile而不寫for的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python3操作YAML文件格式方法解析

    Python3操作YAML文件格式方法解析

    這篇文章主要介紹了Python3操作YAML文件格式方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python入門學(xué)習(xí)之類的相關(guān)知識(shí)總結(jié)

    Python入門學(xué)習(xí)之類的相關(guān)知識(shí)總結(jié)

    今天帶大家復(fù)習(xí)python的基礎(chǔ)知識(shí),文中對類的相關(guān)知識(shí)作了非常詳細(xì)的介紹,對正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • python爬蟲之urllib3的使用示例

    python爬蟲之urllib3的使用示例

    這篇文章主要介紹了 python爬蟲之urllib3的使用示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Jupyter notebook命令和編輯模式常用快捷鍵匯總

    Jupyter notebook命令和編輯模式常用快捷鍵匯總

    這篇文章主要介紹了Jupyter notebook命令和編輯模式常用快捷鍵匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python中.py文件打包成exe可執(zhí)行文件詳解

    Python中.py文件打包成exe可執(zhí)行文件詳解

    這篇文章主要給大家介紹了在Python中.py文件打包成exe可執(zhí)行文件的相關(guān)資料,文中介紹的非常詳細(xì),相信對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • 對python中raw_input()和input()的用法詳解

    對python中raw_input()和input()的用法詳解

    下面小編就為大家分享一篇對python中raw_input()和input()的用法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 使用python爬取抖音視頻列表信息

    使用python爬取抖音視頻列表信息

    這篇文章主要介紹了如何用python爬取抖音視頻列表信息,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 使用python構(gòu)建WebSocket客戶端的教程詳解

    使用python構(gòu)建WebSocket客戶端的教程詳解

    WebSocket是一種在客戶端和服務(wù)器之間實(shí)現(xiàn)雙向通信的協(xié)議,常用于實(shí)時(shí)聊天、實(shí)時(shí)數(shù)據(jù)更新等場景,Python提供了許多庫來實(shí)現(xiàn) WebSocket客戶端,本教程將介紹如何使用Python構(gòu)建WebSocket客戶端,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù)(流程分析)

    python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù)(流程分析)

    這篇文章主要介紹了python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù),這里今天主要是實(shí)踐一下視頻流數(shù)據(jù)的預(yù)處理工作,需要的朋友可以參考下
    2022-05-05

最新評論

武山县| 盈江县| 晴隆县| 连江县| 牟定县| 互助| 梅河口市| 曲水县| 常州市| 都昌县| 青州市| 宜都市| 陈巴尔虎旗| 双流县| 拜泉县| 阿荣旗| 安塞县| 宁都县| 清丰县| 乃东县| 庐江县| 宁河县| 灌南县| 黄大仙区| 怀集县| 永新县| 邓州市| 姚安县| 阿克陶县| 绥滨县| 临夏市| 临夏市| 湖口县| 土默特左旗| 南京市| 元谋县| 沂源县| 安康市| 从化市| 古丈县| 华安县|