0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

chardet庫的安裝與介紹

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-31 15:30 ? 次閱讀

1.chardet庫的安裝與介紹

玩兒過爬蟲的朋友應(yīng)該知道,在爬取不同的網(wǎng)頁時(shí),返回結(jié)果會出現(xiàn)亂碼的情況。比如,在爬取某個(gè)中文網(wǎng)頁的時(shí)候,有的頁面使用GBK/GB2312,有的使用UTF8,如果你需要去爬一些頁面,知道網(wǎng)頁編碼很重要的。

雖然HTML頁面有charset標(biāo)簽,但是有些時(shí)候是不對的,那么chardet就能幫我們大忙了。使用 chardet 可以很方便的實(shí)現(xiàn)字符串/文件的編碼檢測

如果你安裝過Anaconda,那么可以直接使用chardet庫。如果你只是安裝了Python的話,就需要使用下面幾行代碼,完成chardet庫的安裝。

pip install chardet

接著,使用下面這行代碼,導(dǎo)入chardet庫。

import chardet

2.chardet庫的使用

這個(gè)小節(jié),我們分3部分講解。

2.1 chardet.detect()函數(shù)

detect()函數(shù)接受一個(gè)參數(shù),一個(gè)非unicode字符串。它返回一個(gè)字典,其中包含自動檢測到的字符編碼和從0到1的可信度級別。

  • encoding:表示字符編碼方式。
  • confidence:表示可信度。
  • language:語言。

光看這個(gè)解釋,大多數(shù)朋友可能看不懂,下面我們就用例子來講述這個(gè)函數(shù)。

2.2 使用該函數(shù)分別檢測gbk、utf-8和日語

檢測gbk編碼的中文:

str1 = '大家好,我是黃同學(xué)'.encode('gbk')
chardet.detect(str1)

chardet.detect(str1)["encoding"]

結(jié)果如下:

圖片

檢測的編碼是GB2312,注意到GBK是GB2312的父集,兩者是同一種編碼,檢測正確的概率是99%,language字段指出的語言是'Chinese'。

檢測utf-8編碼的中文:

str2 = '我有一個(gè)夢想'.encode('utf-8')
chardet.detect(str2)

chardet.detect(str2)["encoding"]

結(jié)果如下:

圖片

檢測一段日文:

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

chardet.detect(str3)

結(jié)果如下:

圖片

2.3 如何在“爬蟲”中使用chardet庫呢?

我們以百度網(wǎng)頁為例子,進(jìn)行講述。

圖片

這個(gè)網(wǎng)頁的源代碼,使用的是什么編碼呢?我們看看源代碼:

圖片

從圖中可以看到,是utf-8字符編碼。

如果不使用chardet庫,獲取網(wǎng)頁源代碼的時(shí)候,怎么指定字符編碼呢?

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

結(jié)果如下:

圖片

你會發(fā)現(xiàn):正確指定編碼后,沒有亂碼。如果你將編碼改為gbk,再看看結(jié)果。此時(shí)已經(jīng)亂碼。

圖片

如果使用chardet庫,獲取網(wǎng)頁源代碼的時(shí)候,可以輕松指定字符編碼!

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

結(jié)果如下:

圖片

編碼不用我們自己查找,也不用猜,直接交給chardet庫去猜測,正確率還高。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    920

    瀏覽量

    54711
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4697

    瀏覽量

    68085
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84293
收藏 人收藏

    評論

    相關(guān)推薦

    OpenHarmony應(yīng)用開發(fā)安裝數(shù)學(xué)

    OpenHarmony應(yīng)用開發(fā)安裝數(shù)學(xué)
    的頭像 發(fā)表于 12-01 14:15 ?1130次閱讀
    OpenHarmony應(yīng)用開發(fā)<b class='flag-5'>安裝</b>數(shù)學(xué)<b class='flag-5'>庫</b>

    本地安裝并創(chuàng)建MySQL數(shù)據(jù)

    本地安裝并創(chuàng)建MySQL數(shù)據(jù)
    的頭像 發(fā)表于 01-13 15:15 ?808次閱讀
    本地<b class='flag-5'>安裝</b>并創(chuàng)建MySQL數(shù)據(jù)<b class='flag-5'>庫</b>

    數(shù)據(jù)產(chǎn)品介紹與分類

    2-13-數(shù)據(jù)介紹及MySQL安裝
    發(fā)表于 08-01 10:45

    STM32CubeMx+JRE+HAL安裝教程

    Warning:寫作不易,請勿轉(zhuǎn)載,感謝!STM32CubeMx+JRE+HAL安裝教程寫作背景1:JRE程序包與介紹1.1:安裝JRE步驟2:STM32CubeMX
    發(fā)表于 08-11 08:46

    在MacOS M1上構(gòu)建期間出現(xiàn)“ModuleNotFoundError:沒有名為‘chardet’的模塊”是怎么回事?

    我在 M1 mac 上使用 ESP-IDF 時(shí)遇到問題。我已經(jīng)嘗試了我發(fā)現(xiàn)的一切來解決它,但顯然,我沒有運(yùn)氣。癥結(jié)在于缺少“chardet”python 模塊。我讀到的所有涉及缺少“chardet
    發(fā)表于 04-13 07:16

    Linux上安裝Oracle 11g數(shù)據(jù)

    Linux上安裝Oracle 11g數(shù)據(jù)
    發(fā)表于 09-07 09:14 ?3次下載
    Linux上<b class='flag-5'>安裝</b>Oracle 11g數(shù)據(jù)<b class='flag-5'>庫</b>

    04 USB介紹

    04 USB介紹
    發(fā)表于 10-11 09:26 ?4次下載
    04 USB<b class='flag-5'>庫</b><b class='flag-5'>介紹</b>

    Stellaris軟件安裝,特性介紹和資源說明詳細(xì)中文概述

    本文的主要內(nèi)容介紹的是Stellaris軟件安裝,特性介紹和資源說明詳細(xì)中文概述
    發(fā)表于 05-09 11:20 ?5次下載
    Stellaris軟件<b class='flag-5'>庫</b>的<b class='flag-5'>安裝</b>,特性<b class='flag-5'>介紹</b>和資源說明詳細(xì)中文概述

    介紹USB IP是什么?

    USB IP介紹(上)
    的頭像 發(fā)表于 07-05 00:13 ?6339次閱讀
    <b class='flag-5'>介紹</b>USB IP<b class='flag-5'>庫</b>是什么?

    如何在計(jì)算機(jī)上安裝Arduino

    Arduino是共享代碼的便捷方法,例如設(shè)備驅(qū)動程序或常用的實(shí)用程序功能。本指南詳細(xì)介紹了如何在計(jì)算機(jī)上安裝。有關(guān)Arduino及其使
    的頭像 發(fā)表于 11-27 09:42 ?6760次閱讀
    如何在計(jì)算機(jī)上<b class='flag-5'>安裝</b>Arduino<b class='flag-5'>庫</b>

    在Arduino IED中安裝TimeOne文件

    在Arduino IED中安裝TimeOne文件
    發(fā)表于 04-25 09:45 ?4次下載

    安裝TI_MSP432和導(dǎo)入CCS工程

    安裝TI_MSP432和導(dǎo)入CCS工程
    發(fā)表于 12-05 13:36 ?10次下載
    <b class='flag-5'>安裝</b>TI_MSP432<b class='flag-5'>庫</b>和導(dǎo)入CCS工程

    Chardet通用字符編碼檢測器

    ./oschina_soft/chardet.zip
    發(fā)表于 05-24 10:40 ?1次下載
    <b class='flag-5'>Chardet</b>通用字符編碼檢測器

    如何安裝常用Python

    使用常用的Python是非常重要的一步。本文將介紹如何安裝常用的Python,以幫助您在Python開發(fā)中更加高效地進(jìn)行編程。
    的頭像 發(fā)表于 04-14 12:11 ?1100次閱讀

    如何安裝Python圖像處理PIL

    安裝PIL 要使用PIL,我們首先需要安裝它。有兩種方法可以安裝PIL: 方法一:使用pi
    的頭像 發(fā)表于 09-12 17:15 ?2522次閱讀
    如何<b class='flag-5'>安裝</b>Python圖像處理PIL<b class='flag-5'>庫</b>