亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python抓取并保存html頁面時亂碼問題的解決方法

 更新時間:2016年07月01日 11:23:47   作者:holybin  
這篇文章主要介紹了python抓取并保存html頁面時亂碼問題的解決方法,結(jié)合實例形式分析了Python頁面抓取過程中亂碼出現(xiàn)的原因與相應的解決方法,需要的朋友可以參考下

本文實例講述了python抓取并保存html頁面時亂碼問題的解決方法。分享給大家供大家參考,具體如下:

在用Python抓取html頁面并保存的時候,經(jīng)常出現(xiàn)抓取下來的網(wǎng)頁內(nèi)容是亂碼的問題。出現(xiàn)該問題的原因一方面是自己的代碼中編碼設置有問題,另一方面是在編碼設置正確的情況下,網(wǎng)頁的實際編碼和標示的編碼不符合造成的。html頁面標示的編碼在這里:

復制代碼 代碼如下:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

這里提供一種簡單的辦法解決:使用chardet判斷網(wǎng)頁的真實編碼,同時從url請求返回的info判斷標示編碼。如果兩種編碼不同,則使用bs模塊擴展為GB18030編碼;如果相同則直接寫入文件(這里設置系統(tǒng)默認編碼為utf-8)。

import urllib2
import sys
import bs4
import chardet
reload(sys)
sys.setdefaultencoding('utf-8')
def download(url):
  htmlfile = open('test.html','w')
  try:
    result = urllib2.urlopen(url)
    content = result.read()
    info = result.info()
    result.close()
  except Exception,e:
    print 'download error!!!'
    print e
  else:
    if content != None:
      charset1 = (chardet.detect(content))['encoding'] #real encoding type
      charset2 = info.getparam('charset') #declared encoding type
      print charset1,' ', charset2
      # case1: charset is not None.
      if charset1 != None and charset2 != None and charset1.lower() != charset2.lower():
        newcont = bs4.BeautifulSoup(content, from_encoding='GB18030')  #coding: GB18030
        for cont in newcont:
          htmlfile.write('%s\n'%cont)
      # case2: either charset is None, or charset is the same.
      else:
        #print sys.getdefaultencoding()
        htmlfile.write(content) #default coding: utf-8
  htmlfile.close()
if __name__ == "__main__":
  url = 'http://chabaoo.cn'
  download(url)

得到的test.html文件打開如下,可以看到使用的是UTF-8無BOM編碼格式存儲的,也就是我們設置的默認編碼:

更多關于Python相關內(nèi)容感興趣的讀者可查看本站專題:《Python編碼操作技巧總結(jié)》、《Python圖片操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python圖像處理之直線和曲線的擬合與繪制【curve_fit()應用】

    Python圖像處理之直線和曲線的擬合與繪制【curve_fit()應用】

    這篇文章主要介紹了Python圖像處理之直線和曲線的擬合與繪制,結(jié)合實例形式分析了Python曲線擬合相關函數(shù)curve_fit()的使用技巧,需要的朋友可以參考下
    2018-12-12
  • Python強大的自省機制詳解

    Python強大的自省機制詳解

    這篇文章主要為大家介紹了Python強大的自省機制,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python批量改變圖片名字的示例代碼

    Python批量改變圖片名字的示例代碼

    本文主要介紹了Python批量改變圖片名字的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • pandas解決數(shù)據(jù)缺失、重復的方法與實踐過程

    pandas解決數(shù)據(jù)缺失、重復的方法與實踐過程

    這篇文章主要介紹了pandas解決數(shù)據(jù)缺失、重復的方法與實踐過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python掃描IP段查看指定端口是否開放的方法

    Python掃描IP段查看指定端口是否開放的方法

    這篇文章主要介紹了Python掃描IP段查看指定端口是否開放的方法,涉及Python使用socket模塊實現(xiàn)端口掃描功能的相關技巧,需要的朋友可以參考下
    2015-06-06
  • python列表生成式與列表生成器的使用

    python列表生成式與列表生成器的使用

    本篇文章主要介紹了python列表生成式與列表生成器的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • python+opencv實現(xiàn)車道線檢測

    python+opencv實現(xiàn)車道線檢測

    這篇文章主要為大家詳細介紹了python+opencv實現(xiàn)車道線檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • python中有關時間日期格式轉(zhuǎn)換問題

    python中有關時間日期格式轉(zhuǎn)換問題

    這篇文章主要介紹了python中有關時間日期格式轉(zhuǎn)換問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • keras中的backend.clip用法

    keras中的backend.clip用法

    這篇文章主要介紹了keras中的backend.clip用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python基本知識之datetime模塊詳解

    Python基本知識之datetime模塊詳解

    這篇文章主要給大家介紹了關于Python基本知識之datetime模塊的相關資料,Python內(nèi)置的時間模塊datetime包含下面的模塊包含六個類和兩個常數(shù),提供了用于處理日期和時間的類和對應的方法,一般用于處理年、月、日、時、分、秒的統(tǒng)計和計算等需求,需要的朋友可以參考下
    2023-08-08

最新評論