网页中的编码和Python处理

  • 不同网站的编码并本完全相同,在爬虫应用中解析文本信息的时候需要考虑网页的编码方式, 否则获得的结果可能是乱码

可以从网页, 代码里的meta标签的charset属性中看到其编码方式, 倒如<meta charset=”utf-8>指定了网页的编码为utl-8

用于解析文本的Python库主要有BeautifulSoup.BeautifulSoup使用编码自动检测字库(unicodeDammit、chardet等) 来识别输人文档的编码, 并将其转换成unicode编码:同时, BeautifulSoup将输出文档转换成urf-8编码、值得注意的是,编码自动检测功能会搜索整个文本来检测编码,时间成本高,检测结果也可能会错误, 因此, 如果预先知道文档编码, 可以通过在创建BeautifulSoup对象的时候没置from_encoding参数来减少检测错认率和检测时间

soup =BeautifulSoup(html_input,from_encoding="gbk")

此外,可以使用prettify()或者encoding()方法来指定输出文档的编码

soup=prettify("gb2312")

自动检测一个页面的编码方式,可以通过chardet包来进行,需要事先安装,使用如下:

import chardet
import requests
res=requests.get("http://fudan.edu.cn")
cs=chardet.detect(res.content)#通过响应信息的content属性来判断页面的编码方式

chardet.detect的检测结果是一个字典,如下,字典的关键字包括’encoding‘和’confidence‘等,其中,前者的值就是页面编码,后者表示自动检测是对结果的确信度[0,1]

{ 'encoding':'utf-8','confidence':1.0,'language':''}

因此可以通过cs[‘encoding’];来得到页面编码

    原文作者:一只量子猪
    原文地址: https://blog.csdn.net/qq_53388087/article/details/118161641
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞