91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Python解決抓取內容亂碼問題(decode和encode解碼)

發布時間:2020-09-26 03:35:10 來源:腳本之家 閱讀:171 作者:淺然_ 欄目:開發技術

一、亂碼問題描述

經常在爬蟲或者一些操作的時候,經常會出現中文亂碼等問題,如下

詳解Python解決抓取內容亂碼問題(decode和encode解碼)

原因是源網頁編碼和爬取下來后的編碼格式不一致

 二、利用encode與decode解決亂碼問題

字符串在Python內部的表示是unicode編碼,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

decode的作用是將其他編碼的字符串轉換成unicode編碼,如str1.decode(‘gb2312'),表示將gb2312編碼的字符串str1轉換成unicode編碼。

encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode(‘utf-8'),表示將unicode編碼的字符串str2轉換成utf-8編碼。

decode中寫的就是想抓取的網頁的編碼,encode即自己想設置的編碼

代碼如下

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2

request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')
RES=urllib2.urlopen(request).read()
RES = RES.decode('gb2312').encode('utf-8')//解決亂碼
wfile=open(r'./1.html',r'wb')
wfile.write(RES)
wfile.close()
print RES

或者

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2

request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')
RES=urllib2.urlopen(request).read()
RES=RES.decode('gb2312')
RES=RES.encode('utf-8')
wfile=open(r'./1.html',r'wb')
wfile.write(RES)
wfile.close()
print RES

但是還要注意:
如果一個字符串已經是unicode了,再進行解碼則將出錯,因此通常要對其編碼方式是否為unicode進行判斷

isinstance(s, unicode)#用來判斷是否為unicode

用非unicode編碼形式的str來encode會報錯

所以最終可靠代碼:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2

request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')
RES=urllib2.urlopen(request).read()

if isinstance(RES, unicode):
 RES=RES.encode('utf-8')
else:
 RES=RES.decode('gb2312').encode('utf-8')

wfile=open(r'./1.html',r'wb')
wfile.write(RES)
wfile.close()
print RES

詳解Python解決抓取內容亂碼問題(decode和encode解碼)

三、如何找到需要抓取的目標網頁的編碼格式

1、查看網頁源代碼

詳解Python解決抓取內容亂碼問題(decode和encode解碼)

如果源代碼中沒有charset編碼格式顯示可以用下面的方法

2、檢查元素,查看Response Headers

詳解Python解決抓取內容亂碼問題(decode和encode解碼)

以上所述是小編給大家介紹的Python解決抓取內容亂碼問題(decode和encode解碼)詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲松县| 蓝山县| 华容县| 苏州市| 通江县| 疏附县| 石阡县| 陆川县| 江西省| 红桥区| 渭南市| 清丰县| 古交市| 察雅县| 揭东县| 丰台区| 平安县| 民和| 林口县| 漾濞| 陈巴尔虎旗| 团风县| 墨脱县| 含山县| 陕西省| 三明市| 长汀县| 沁阳市| 高青县| 屏南县| 裕民县| 碌曲县| 绿春县| 聊城市| 赤城县| 平利县| 荣昌县| 定襄县| 永川市| 门头沟区| 贵阳市|