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

python抓取并保存html頁(yè)面時(shí)亂碼問(wèn)題的解決方法

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

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

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

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

這里提供一種簡(jiǎn)單的辦法解決:使用chardet判斷網(wǎng)頁(yè)的真實(shí)編碼,同時(shí)從url請(qǐng)求返回的info判斷標(biāo)示編碼。如果兩種編碼不同,則使用bs模塊擴(kuò)展為GB18030編碼;如果相同則直接寫(xiě)入文件(這里設(shè)置系統(tǒng)默認(rèn)編碼為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://www.fzitv.net'
  download(url)

得到的test.html文件打開(kāi)如下,可以看到使用的是UTF-8無(wú)BOM編碼格式存儲(chǔ)的,也就是我們?cè)O(shè)置的默認(rèn)編碼:

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

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

舟山市| 灵宝市| 钟山县| 亳州市| 永州市| 遵义市| 古浪县| 麦盖提县| 凤阳县| 榆树市| 冀州市| 镇雄县| 岳池县| 濉溪县| 台南县| 汝阳县| 涞源县| 普宁市| 景东| 九龙县| 浏阳市| 东丽区| 石门县| 巴马| 监利县| 府谷县| 武城县| 凤翔县| 临沂市| 泸西县| 农安县| 梅州市| 天水市| 天长市| 红安县| 九龙坡区| 鲜城| 光泽县| 施甸县| 乌兰浩特市| 南平市|