做网站手机号抓取的公司,容桂免费网站建设公司,wordpress添加支付教程,finally wordpress主题一、乱码问题描述
经常在爬虫或者一些操作的时候#xff0c;经常会出现中文乱码等问题#xff0c;如下原因是源网页编码和爬取下来后的编码格式不一致
二、利用encode与decode解决乱码问题
字符串在Python内部的表示是unicode编码#xff0c;在做编码转换时#xff0c;通常…一、乱码问题描述
经常在爬虫或者一些操作的时候经常会出现中文乱码等问题如下原因是源网页编码和爬取下来后的编码格式不一致
二、利用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
requesturllib2.Request(rhttp://nhxy.zjxu.edu.cn/)
RESurllib2.urlopen(request).read()
RES RES.decode(gb2312).encode(utf-8)//解决乱码
wfileopen(r./1.html,rwb)
wfile.write(RES)
wfile.close()
print RES
或者
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/22
import urllib2
requesturllib2.Request(rhttp://nhxy.zjxu.edu.cn/)
RESurllib2.urlopen(request).read()
RESRES.decode(gb2312)
RESRES.encode(utf-8)
wfileopen(r./1.html,rwb)
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
requesturllib2.Request(rhttp://nhxy.zjxu.edu.cn/)
RESurllib2.urlopen(request).read()
if isinstance(RES, unicode):
RESRES.encode(utf-8)
else:
RESRES.decode(gb2312).encode(utf-8)
wfileopen(r./1.html,rwb)
wfile.write(RES)
wfile.close()
print RES三、如何找到需要抓取的目标网页的编码格式
1、查看网页源代码如果源代码中没有charset编码格式显示可以用下面的方法
2、检查元素查看Response Headers以上所述是小编给大家介绍的Python解决抓取内容乱码问题decode和encode解码详解整合希望对大家有所帮助如果大家有任何疑问请给我留言小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持