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的Django框架中获取单个对象数据的简单方法
Jul 17 Python
浅谈Python的Django框架中的缓存控制
Jul 24 Python
Python中Threading用法详解
Dec 27 Python
Pycharm设置界面全黑的方法
May 23 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
使用python批量化音乐文件格式转换的实例
Jan 09 Python
python浪漫表白源码
Apr 05 Python
python hough变换检测直线的实现方法
Jul 12 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
使用python实现画AR模型时序图
Nov 20 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 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 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
python Django模板的使用方法
2016/01/14 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python机器学习之神经网络(三)
2017/12/20 Python
200行python代码实现2048游戏
2019/07/17 Python
np.random.seed() 的使用详解
2020/01/14 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
python中yield的用法详解
2021/01/13 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
如何在Shell脚本中使用函数
2015/09/06 面试题
会计找工作求职信范文
2013/12/09 职场文书
业务总经理岗位职责
2014/02/03 职场文书
六查六看剖析材料
2014/02/15 职场文书
团支部建设方案
2014/05/02 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
升学宴来宾致辞
2015/07/27 职场文书
大学军训心得体会800字
2016/01/11 职场文书