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实现绘制树枝简单示例
Jul 24 Python
python返回昨天日期的方法
May 13 Python
Python2中的raw_input() 与 input()
Jun 12 Python
python切片及sys.argv[]用法详解
May 25 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
python内存管理机制原理详解
Aug 12 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
python 实现目录复制的三种小结
Dec 04 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
Jul 13 Python
python基于turtle绘制几何图形
Jun 15 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP 数组基础知识小结
2010/08/20 PHP
PHP5函数小全(分享)
2013/06/06 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
JSONP基础知识详解
2017/03/19 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
Python中如何获取类属性的列表
2016/12/26 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
大学生水文观测实习自我鉴定
2013/09/29 职场文书
优秀党员转正的自我评价
2013/10/06 职场文书
中级会计职业生涯规划范文
2014/01/16 职场文书
对孩子的寄语
2014/04/09 职场文书
访谈节目策划方案
2014/05/15 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
Python中的min及返回最小值索引的操作
2021/05/10 Python