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中itertools模块用法详解
Sep 25 Python
python批量提交沙箱问题实例
Oct 08 Python
python使用PIL缩放网络图片并保存的方法
Apr 24 Python
python tkinter界面居中显示的方法
Oct 11 Python
Python基本socket通信控制操作示例
Jan 30 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
python三大神器之fabric使用教程
Jun 10 Python
Python Django框架防御CSRF攻击的方法分析
Oct 18 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
python简单实现9宫格图片实例
Sep 03 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
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
javascrip关于继承的小例子
2013/05/10 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
JS中递归函数
2016/06/17 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
js实现弹窗效果
2020/08/09 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python使用pymysql小技巧
2017/06/04 Python
python中 * 的用法详解
2019/07/10 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
计算机专业自荐信
2013/10/14 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
高三家长寄语
2014/04/03 职场文书
考核评语大全
2014/04/29 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python