python3的UnicodeDecodeError解决方法


Posted in Python onDecember 20, 2019

爬虫部分解码异常

response.content.decode() # 默认使用 utf-8 出现解码异常

python3的UnicodeDecodeError解决方法

以下是设计的通用解码

通过 text 获取编码

# 通过 text 获取编码
import requests
from lxml import etree


def public_decode():
 headers = {
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
 }
 response = requests.get('https://blog.csdn.net/a13951206104', headers=headers)
 html = etree.HTML(response.text) # response.text 能自动获取编码, 大多乱码
 _charset = html.xpath('//@charset') or []
 if _charset:
  encode_content = response.content.decode(_charset[0].strip().lower(),
             errors='replace') # 如果设置为replace,则会用?取代非法字符;
  return {'response_text': encode_content, "response_obj": response}
 for _charset_ in ['utf-8', 'gbk', 'gb2312'] # 国内主要这3种:
  if '�' not in response.content.decode(_charset_, errors='replace'):
   return {'response_text': response.content.decode(_charset_, errors='replace'),
     "response_obj": response}
  else:
   # 默认还得是 utf-8
   return {'response_text': response.content.decode('utf-8', errors='replace'),
     "response_obj": response}

通过数据 来解编码(推荐)

def public_decode(response):
 headers = {
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
 }
 response = requests.get('https://blog.csdn.net/a13951206104', headers=headers)
 html = etree.HTML(response.text)
 # 不希望抓下来的数据中有非法字符
 item = dict()
 result = None
 for _charset_ in ['utf-8', 'gbk', 'gb2312']:
  if response:
   result = response.content.decode(_charset_, errors='replace')
   item['content'] = html.xpath('//*[@id="content"]')
   if '�' not in result['content'].strip():
    result =response.content.decode(_charset_, errors='replace')
    break
 if not result:
  # 默认 utf-8
  result = response.content.decode(_charset_, errors='replace')

errors=‘replace' 使解码不报异常, 然后把几个常用的编码一个个试下, 最后要看落下来的数据, 所以最好拿数据 去获取合适的编码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则表达式match和search用法实例
Mar 26 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
[原创]pip和pygal的安装实例教程
Dec 07 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
通过实例解析python and和or使用方法
Nov 14 Python
Python Socket多线程并发原理及实现
Dec 11 Python
基于python调用psutil模块过程解析
Dec 20 #Python
python如何使用jt400.jar包代码实例
Dec 20 #Python
基于python使用tibco ems代码实例
Dec 20 #Python
使用python实现数组、链表、队列、栈的方法
Dec 20 #Python
python隐藏类中属性的3种实现方法
Dec 19 #Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 #Python
关于Python中定制类的比较运算实例
Dec 19 #Python
You might like
php 删除cookie和浏览器重定向
2009/03/16 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
详解Python中的__new__()方法的使用
2015/04/09 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
python 自定义装饰器实例详解
2019/07/20 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
python 实现线程之间的通信示例
2020/02/14 Python
大学同学聚会邀请函
2014/01/19 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
建筑安全生产责任书
2014/07/22 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
道歉信怎么写
2015/05/12 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
小学班级口号大全
2015/12/25 职场文书
2019个人半年工作总结
2019/06/21 职场文书