本文主要介绍python爬虫必备的chardet库。文章中有非常详细的代码示例,对正在学习Python的朋友很有帮助。有需要的可以参考一下。
目录
一、chardet库二的安装与介绍。chardet库的使用2.1 chardet.detect()函数2.2使用该函数分别检测gbk、utf-8和日文2.3如何在“爬虫”中使用chardet库?
一、chardet库的安装与介绍
玩过爬虫的朋友应该都知道,爬不同的网页,返回的结果都会是乱码。例如,当抓取中文网页时,一些页面使用GBK/GB2312,而其他页面使用UTF8。如果需要抓取一些页面,了解网页代码很重要。
虽然HTML页面有charset标签,但是有时候是错误的,所以chardet可以帮我们很多。Chardet可用于方便地检测字符串/文件的编码。
如果已经安装了Anaconda,可以直接使用chardet库。如果您刚刚安装了Python,您需要使用下面几行代码来完成chardet库的安装。
pip安装chardet
然后,使用下面的代码行导入chardet库。
导入字符
二、chardet库的使用
我们将分三部分解释这一部分。
2.1 chardet.detect()函数
detect()函数接受一个参数,一个非unicode字符串。它返回一个字典,其中包含自动检测的字符代码和从0到1的置信度。
编码:表示字符编码方法。
自信:表示可信。
语言:语言。
单看这个解释,大部分朋友可能看不懂。让我们用例子来描述这个功能。
2.2 使用该函数分别检测gbk、utf-8和日语
测试gbk编码的中文:
Str1='大家好,我是同学黄'。编码(“gbk”)
chardet.detect(str1)
chardet . detect(str 1)[' encoding ']
结果如下:
检测到的代码是GB2312。注意,GBK是GB2312的父集,两者是相同的代码。正确检测的概率为99%,语言字段指示的语言为‘中文’。
检测utf-8编码的中文:
Str2='我有一个梦想'。编码(“utf-8”)
chardet.detect(str2)
chardet . detect(str 2)[' encoding ']
结果如下:
检测一段日语:
str3=''.编码(“euc-jp”)
chardet.detect(str3)
chardet.detect(str3)
结果如下:
2.3 如何在“爬虫”中使用chardet库呢?
下面以百度网页为例来讲一下。
这个网页的源代码用了什么代码?让我们来看看源代码:
从图中可以看出,是utf-8字符编码。
如果不使用chardet库,如何在获取网页源代码时指定字符编码?
导入字符
导入请求
headers={ ' User-Agent ':' Mozilla/5.0(Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/55 . 0 . 2883 . 87 Safari/537.36 ' }
response=requests . get(' https://www . Baidu . com ',headers=headers)
response.encoding='utf-8 '
回复.文本
结果如下:
正确指定代码后你会发现没有乱码。如果把编码改成gbk,看看结果。这时候就是乱码了。
如果使用chardet库,在获取网页源代码时可以很容易地指定字符编码!
导入字符
导入请求
headers={ ' User-Agent ':' Mozilla/5.0(Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/55 . 0 . 2883 . 87 Safari/537.36 ' }
response=requests . get(' https://www . Baidu . com ',headers=headers)
#注意下面一行代码。是怎么写的?
response . encoding=chardet . detect(response . content)[' encoding ']
回复.文本
结果如下:
我们不用自己查代码,也不用猜。我们只是交给chardet库去猜,准确率还是很高的。
关于Python crawler的基本chardet库的这篇文章到此为止。有关Python chardet库的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。