Python爬虫踩坑:UnicodeEncodeError: ‘gbk‘ codec can‘t encode character 全网最有效解的决方法

2023-05-16

在这里插入图片描述

1. 问题描述

  • 我在网上看到了一本喜欢的小说,希望用爬虫把正本小说下载下来。
    在这里插入图片描述
    于是写下了这样一段代码:
from urllib import request

headers = {
    "User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; ."
                  "NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)"}

url_menu = "https://www.biqu100.com/3_3075/"

req = request.Request(url=url_menu, headers=headers)
res = request.urlopen(req, timeout=5)
html = res.read().decode("utf-8")
print(html)

可是解释器报错:UnicodeEncodeError: ‘gbk’ codec can’t encode character …
在这里插入图片描述
在这里插入图片描述

2. 解决方法

  • 按照网上找到的很多方法进行了尝试,结果均无效,但是作为笔记,在此还是做一下记录。
  • 对于第一次遇到这个问题的同学,建议从第一步开始仔细排查一遍;
  • 对于在网上找了很久解决方案的同学,可以直接跳到文章最后,查看最终办法

2.1 步骤1

  • 检查解码格式
  • 首先要确定从网上爬下来的这一段二进制流应该用什么格式来解码。如果这是一串gbk格式的字节流,但我们用utf-8来解码,肯定无法解析。
  • 在网页上点击鼠标右键,点击“检查”,在html中的head里找到“meta charset”,这一项就是正确的解码格式。
    在这里插入图片描述
  • 如果在解码时已经指定了正确的格式,如:
html = res.read().decode("utf-8")
  • 结果依旧报错,则参照步骤二。

2.2 步骤2

  • 忽略异常字符
  • 虽然解码格式已经确认了,但是由于获取到的二进制流中,可能存在错误信息,或其中夹杂的部分字符根本就不是文字信息,各种各样的原因都有可能导致我们解码错误。
  • 关于这个问题,网上有很多解决方法。在这里我记录一个最简单的。
  • 我们在解码的时候,调用的是StreamReader类的decode函数。
    在这里插入图片描述
  • 这个函数的error参数可以指定发生错误时,应该采取的处理方式。我们在这个参数里填上"ignore",那么,在解码过程中,遇到无法解析的字符时,就会自动跳过,从而完成整体解析。
  • 有些同学做到这一步的时候,问题应该就已经解决了,但是我踩坑踩得比较深,即使做到这一步了,问题还是没有解决。
    在这里插入图片描述

2.3 步骤3

  • PyCharm设置
  • 我注意到,我已经用utf-8来解码了,但是解释器的报错信息还是暴出gbk方面的解码错误。
  • 会对这串二进制流进行处理的只有三方,一方是Chrome浏览器,一方是Python解释器,另一方是PyCharm,事实证明Chrome浏览器用utf-8格式是可以解析的,那么格式肯定是对的,StreamReader类已经考虑到了异常字符的处理方式,所以Python本身也不会有问题,那么问题只有可能出在PyCharm的设置上了。
  • 点击File -> Settings…
    在这里插入图片描述
    找到Project Encoding项目,发现这一项果然写死了GBK格式,将其修改为UTF-8,然后点击OK。
    在这里插入图片描述
  • 大功告成
    在这里插入图片描述
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫踩坑:UnicodeEncodeError: ‘gbk‘ codec can‘t encode character 全网最有效解的决方法 的相关文章

  • PixHawk飞控和Mission Planner地面站安装调试

    常用地面站软件主要有QGroundControl和MissionPlanner两种 下面以mission planner来介绍如何使用地面站软件进行固件升级和传感器校准 一 PixHawk飞控配置 www pixhawk com PixHa
  • PX4&GAAS

    PX4源码 xff1a https github com PX4 Firmware QGroundControl安装教程 xff1a https docs qgroundcontrol com en getting started down
  • MSCKF那些事-知乎转载

    MSCKF那些事 xff08 一 xff09 MSCKF算法简介MSCKF那些事 xff08 二 xff09 S MSCKF试用与源码解析MSCKF那些事 xff08 三 xff09 算法详解1 xff1a 前端特征跟踪MSCKF那些事 x
  • 赶快入手12代酷睿,畅享性能飞升体验-Acer掠夺者战斧300笔记本评测

    在这个社会全面数字化转型的时代 xff0c 人们对于计算机算力的需求越来越大 xff0c 对于日常使用的主力办公笔记本也是要求越来越全面 xff0c 尤其像笔者这样的编程一族 xff0c 今年一季度酷睿12代系列处理器的推出 xff0c 堪
  • 视觉惯性里程计VIO综述

    参考 xff1a https blog csdn net xiaoxiaowenqiang article details 81192045 目前主流的VIO开源方案主要有以下几类 xff0c 按照相机与IMU的耦合方式可分为松耦合和紧耦合
  • 常用地图结构和基础知识

    1 Occupancy grid map 占用栅格图 最稠密 每隔一个距离就要进行切分 xff08 当每个格子切的比较小也就是分辨率比较大的时候 xff0c 内存非常大 xff09 结构化坐标索引查询 xff0c O 1 https git
  • 2022年度盘点:十大最佳开源SLAM算法

    激光雷达里程计 香港大学开源激光雷达惯性视觉里程计FAST LIVO 论文名 xff1a FAST LIVO Fast and Tightly coupled Sparse Direct LiDAR Inertial Visual Odom
  • STL标准模版库之算法(algorithm)

    STL xff08 Standard Template Library xff0c 标准模板库 是惠普实验室开发的一系列软件的统称 它是由Alexander Stepanov Meng Lee和David R Musser在惠普实验室工作时
  • 树苺派TF卡备份/还原镜像

    树苺派TF卡备份 还原镜像 TF卡备份TF卡还原 备份和还原树莓派TF卡镜像推荐在Linux下进行 TF卡备份 在Ubuntu下插入装有Raspbian的TF卡会直接挂载 xff0c 挂载后的盘在 dev下显示为 34 dev sdx 34
  • 通过dockerfile 创建镜像以及更新镜像

    制作Docker镜像 1 安装 Docker Docker 要求 CentOS 系统的内核版本高于 3 10 查看当前系统的版本 uname r 安装 Docker 软件包和依赖包 yum y install docker 安装完成 从远程
  • RT-Thread 线程同步及通信 -- 信号量、互斥量、事件、邮箱、消息队列

    目录 一 RT Thread 信号量 二 RT Thread 互斥量 三 RT Thread 事件标志组 四 RT Thread 邮箱 五 RT Thread 消息队列 一 RT Thread 信号量 1 信号量相关函数 创建信号量 64
  • Fiddler抓不到浏览器包的常见原因

    代理未设置成功 fiddler 之所以能抓包 xff0c 本质上是因为浏览器 App 软件设置了代理为 fiddler 一旦遇到抓不到包的情况 xff0c 首先应排查浏览器代理是否设置正确 以 Chrome 为例 xff0c 代理设置为 x
  • 经典 SQL 数据库笔试题及答案整理

    马上又是金三银四啦 xff0c 有蛮多小伙伴在跳槽找工作 xff0c 但对于年限稍短的软件测试工程师 xff0c 难免会需要进行笔试 xff0c 而在笔试中 xff0c 基本都会碰到一道关于数据库的大题 xff0c 今天这篇文章呢 xff0
  • 软件测试项目实战(web+app+h5+小程序)

    没有实战经验 xff0c 简历不好编写 xff0c 而且也不好就业 今天给大家分享一个非常适合练手的软件测试项目 xff0c 此项目涵盖web端 app端 h5端 小程序端 xff0c 可以说非常之全面 获取方式在文末 项目介绍 项目名 x
  • 基础软件照搬开源不可取,自力更生才是正途

    最近有关开源软件的话题始终牢牢占据着IT界的新闻头条 xff0c Log4j开源软件的惊天漏洞 Fake js的作者也惊天删库跑路了 xff0c CurL的作者怒怼苹果只会白嫖开源却不出力 xff0c Linux的祖师爷Linus也不知所云
  • ADB 命令知多少?详细 ADB 命令大全来啦

    一 ADB 简介 1 什么是 ADB ADB 全称为 Android Debug Bridge xff0c 起到调试桥的作用 xff0c 是一个客户端 服务器端程序 其中客户端是用来操作的电脑 xff0c 服务端是 Android 设备 A
  • 软测面试如何介绍项目?要做哪些技术准备?

    测试人员在找工作中 xff0c 基本都会碰到让介绍项目的这种面试题 xff0c 如何正确介绍自己的项目 xff1f 需要做哪些技术准备 xff1f 今天这篇文章 xff0c 围绕这些问题 xff0c 跟大家一起聊一聊 Q 关于介绍自己的项目
  • 看完即会,抓取微信小程序数据包教程

    在给学员答疑的时候 xff0c 有很多小伙伴问到能不能抓取到微信小程序数据呢 xff1f 答案当然是肯定的 xff0c 通过Fiddler或者Charles这些主流的抓包工具都可以抓得到 xff0c 在IOS平台抓取微信小程序和https请
  • 金三银四必备软件测试刷题神器,刷完还怕面试不过吗?

    小编热衷于收集整理资源 xff0c 记录踩坑到爬坑的过程 希望能把自己所学 xff0c 实际工作中使用的技术 学习方法 心得及踩过的一些坑 xff0c 记录下来 也希望想做软件测试的你一样 xff0c 通过我的分享可以少走一些弯路 xff0
  • 今天面了一个来阿里要求月薪23K,明显感觉他背了很多面试题...

    最近有朋友去阿里面试 xff0c 面试前后进行了20天左右 xff0c 包含4轮电话面试 1轮笔试 1轮主管视频面试 1轮hr视频面试 据他所说 xff0c 80 的人都会栽在第一轮面试 xff0c 要不是他面试前做足准备 xff0c 估计

随机推荐