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 HTMLParser模块解析html获取url实例
Apr 08 Python
浅谈Python中数据解析
May 05 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
python将数组n等分的实例
Dec 02 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
python字典按照value排序方法
Dec 28 Python
Python中可变和不可变对象的深入讲解
Aug 02 Python
python对文档中元素删除,替换操作
Apr 02 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php实现的农历算法实例
2015/08/11 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
react路由配置方式详解
2017/08/07 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
使用python实现画AR模型时序图
2019/11/20 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
Python实现弹球小游戏
2020/08/01 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
乔迁宴答谢词
2014/01/21 职场文书
手机银行营销方案
2014/03/14 职场文书
核心价值观演讲稿
2014/05/13 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书