国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2019-11-25 16:40:26
字體:
來源:轉載
供稿:網友

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

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

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

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

import urllib2import sysimport bs4import chardetreload(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 = '//m.survivalescaperooms.com'  download(url)

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高陵县| 铁岭县| 武隆县| 门源| 葫芦岛市| 台州市| 汾阳市| 长汀县| 永昌县| 宜城市| 阜城县| 治县。| 娄底市| 乌什县| 阳信县| 鹰潭市| 秦安县| 中牟县| 临西县| 灵宝市| 银川市| 砀山县| 茂名市| 海淀区| 资溪县| 肇庆市| 柘城县| 拜泉县| 武义县| 华蓥市| 双峰县| 武强县| 南丹县| 青州市| 潞城市| 宜章县| 靖州| 台中市| 阿荣旗| 姜堰市| 新野县|