日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)

發(fā)布時間:2023/12/10 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、亂碼問題描述

經(jīng)常在爬蟲或者一些操作的時候,經(jīng)常會出現(xiàn)中文亂碼等問題,如下

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

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

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

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

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

decode中寫的就是想抓取的網(wǎng)頁的編碼,encode即自己想設(shè)置的編碼

代碼如下

#!/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

但是還要注意:

如果一個字符串已經(jīng)是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

三、如何找到需要抓取的目標(biāo)網(wǎng)頁的編碼格式

1、查看網(wǎng)頁源代碼

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

2、檢查元素,查看Response Headers

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

總結(jié)

以上是生活随笔為你收集整理的python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。