0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

chardet库的安装与介绍

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-31 15:30 次阅读

1.chardet库的安装与介绍

玩儿过爬虫的朋友应该知道,在爬取不同的网页时,返回结果会出现乱码的情况。比如,在爬取某个中文网页的时候,有的页面使用GBK/GB2312,有的使用UTF8,如果你需要去爬一些页面,知道网页编码很重要的。

虽然HTML页面有charset标签,但是有些时候是不对的,那么chardet就能帮我们大忙了。使用 chardet 可以很方便的实现字符串/文件的编码检测

如果你安装过Anaconda,那么可以直接使用chardet库。如果你只是安装了Python的话,就需要使用下面几行代码,完成chardet库的安装。

pip install chardet

接着,使用下面这行代码,导入chardet库。

import chardet

2.chardet库的使用

这个小节,我们分3部分讲解。

2.1 chardet.detect()函数

detect()函数接受一个参数,一个非unicode字符串。它返回一个字典,其中包含自动检测到的字符编码和从0到1的可信度级别。

  • encoding:表示字符编码方式。
  • confidence:表示可信度。
  • language:语言。

光看这个解释,大多数朋友可能看不懂,下面我们就用例子来讲述这个函数。

2.2 使用该函数分别检测gbk、utf-8和日语

检测gbk编码的中文:

str1 = '大家好,我是黄同学'.encode('gbk')
chardet.detect(str1)

chardet.detect(str1)["encoding"]

结果如下:

图片

检测的编码是GB2312,注意到GBK是GB2312的父集,两者是同一种编码,检测正确的概率是99%,language字段指出的语言是'Chinese'。

检测utf-8编码的中文:

str2 = '我有一个梦想'.encode('utf-8')
chardet.detect(str2)

chardet.detect(str2)["encoding"]

结果如下:

图片

检测一段日文:

str3 = 'ありがとう'.encode('euc-jp')
chardet.detect(str3)

chardet.detect(str3)

结果如下:

图片

2.3 如何在“爬虫”中使用chardet库呢?

我们以百度网页为例子,进行讲述。

图片

这个网页的源代码,使用的是什么编码呢?我们看看源代码:

图片

从图中可以看到,是utf-8字符编码。

如果不使用chardet库,获取网页源代码的时候,怎么指定字符编码呢?

import chardet
import requests

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
response = requests.get('https://www.baidu.com',headers=headers)
response.encoding = "utf-8"
response.text

结果如下:

图片

你会发现:正确指定编码后,没有乱码。如果你将编码改为gbk,再看看结果。此时已经乱码。

图片

如果使用chardet库,获取网页源代码的时候,可以轻松指定字符编码!

import chardet
import requests

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
response = requests.get('https://www.baidu.com',headers=headers)

# 注意下面这行代码,是怎么写的?
response.encoding = chardet.detect(response.content)['encoding']
response.text

结果如下:

图片

编码不用我们自己查找,也不用猜,直接交给chardet库去猜测,正确率还高。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码
    +关注

    关注

    6

    文章

    942

    浏览量

    54815
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84633
收藏 人收藏

    评论

    相关推荐

    OpenHarmony应用开发安装数学

    OpenHarmony应用开发安装数学
    的头像 发表于 12-01 14:15 1178次阅读
    OpenHarmony应用开发<b class='flag-5'>安装</b>数学<b class='flag-5'>库</b>

    本地安装并创建MySQL数据

    本地安装并创建MySQL数据
    的头像 发表于 01-13 15:15 859次阅读
    本地<b class='flag-5'>安装</b>并创建MySQL数据<b class='flag-5'>库</b>

    数据产品介绍与分类

    2-13-数据介绍及MySQL安装
    发表于 08-01 10:45

    STM32CubeMx+JRE+HAL安装教程

    Warning:写作不易,请勿转载,感谢!STM32CubeMx+JRE+HAL安装教程写作背景1:JRE程序包与介绍1.1:安装JRE步骤2:STM32CubeMX
    发表于 08-11 08:46

    如何安装HAL固件

    如何安装HAL固件
    发表于 11-29 07:51

    在MacOS M1上构建期间出现“ModuleNotFoundError:没有名为‘chardet’的模块”是怎么回事?

    我在 M1 mac 上使用 ESP-IDF 时遇到问题。我已经尝试了我发现的一切来解决它,但显然,我没有运气。症结在于缺少“chardet”python 模块。我读到的所有涉及缺少“chardet
    发表于 04-13 07:16

    Linux上安装Oracle 11g数据

    Linux上安装Oracle 11g数据
    发表于 09-07 09:14 3次下载
    Linux上<b class='flag-5'>安装</b>Oracle 11g数据<b class='flag-5'>库</b>

    04 USB介绍

    04 USB介绍
    发表于 10-11 09:26 4次下载
    04 USB<b class='flag-5'>库</b><b class='flag-5'>介绍</b>

    Stellaris软件安装,特性介绍和资源说明详细中文概述

    本文的主要内容介绍的是Stellaris软件安装,特性介绍和资源说明详细中文概述
    发表于 05-09 11:20 5次下载
    Stellaris软件<b class='flag-5'>库</b>的<b class='flag-5'>安装</b>,特性<b class='flag-5'>介绍</b>和资源说明详细中文概述

    介绍USB IP是什么?

    USB IP介绍(上)
    的头像 发表于 07-05 00:13 6397次阅读
    <b class='flag-5'>介绍</b>USB IP<b class='flag-5'>库</b>是什么?

    如何在计算机上安装Arduino

    Arduino是共享代码的便捷方法,例如设备驱动程序或常用的实用程序功能。本指南详细介绍了如何在计算机上安装。有关Arduino及其使
    的头像 发表于 11-27 09:42 6875次阅读
    如何在计算机上<b class='flag-5'>安装</b>Arduino<b class='flag-5'>库</b>

    安装TI_MSP432和导入CCS工程

    安装TI_MSP432和导入CCS工程
    发表于 12-05 13:36 10次下载
    <b class='flag-5'>安装</b>TI_MSP432<b class='flag-5'>库</b>和导入CCS工程

    Chardet通用字符编码检测器

    ./oschina_soft/chardet.zip
    发表于 05-24 10:40 4次下载
    <b class='flag-5'>Chardet</b>通用字符编码检测器

    如何安装常用Python

    使用常用的Python是非常重要的一步。本文将介绍如何安装常用的Python,以帮助您在Python开发中更加高效地进行编程。
    的头像 发表于 04-14 12:11 1157次阅读

    如何安装Python图像处理PIL

    安装PIL 要使用PIL,我们首先需要安装它。有两种方法可以安装PIL: 方法一:使用pi
    的头像 发表于 09-12 17:15 2684次阅读
    如何<b class='flag-5'>安装</b>Python图像处理PIL<b class='flag-5'>库</b>