爬虫中url中文常用的编码和加密方式

本文探讨了爬虫中遇到的中文URL编码问题,重点介绍了Unicode(包括UTF-8)、GB2312、GBK等常见编码方式,以及加密手段如MD5的应用实例。通过实例展示如何识别和处理这些编码,是爬虫开发者必备知识。
摘要由CSDN通过智能技术生成

在爬虫的时候经常会遇到URL中包含中文字符,可以直接指示到.jpg .gif .mp3/4…等文件的地址。但是因为是中文,URL中无法直接显示。网站一般会采用编码或者加密的方式对中文字符进行处理。但是对于编码或者加密的方式不同网站有不同的方法。
通常采用的方式有一下几种:

一、Unicode编码

Unicode编码通常由两个字节组成,称作USC-2,个别偏僻字由四个字节组成,称作USC-4。前127个还表示原来ASCII码里的字符,只不过由一个字节变成了两个字节。

unicode编码基本格式为U开头,以斜杠分开。如图所示:
在这里插入图片描述
优点:可以囊括多国语言,囊括了常用汉字

不足:表示一个英文字符由一个字节变成了两个,浪费存储空间和传输速度。生僻字表示不足

二、UTF-8编码

Unicode编码的一种,Unicode用一些基本的保留字符制定了三套编码方式,它们分别为UTF-8,UTF-16,UTF-32.在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处是UTF-8保留了ASCII字符的编码作为它的一部分。UTF-8俗称“万国码”,可以同屏显示多语种,一个汉字通常占用3字节(生僻字占6个)。为了做到国际化,网页尽可能采用UTF-8编码

以&#x开头,分号分隔。如图所示:
在这里插入图片描述
在这里插入图片描述

三、GB2312

GB2312简体中文编码,一个汉字占用2个字节,在大陆是主要的编码方式。当文章/网页中包含繁体中文、日文、韩文等时,这些内容可能无法被正确编码。

作用:国家简体中文字符集,兼容ASCII

位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。

范围:高字节从A1-A7,低字节从A1到FE。将高字节和低字节分别加上0xA0即可得到编码。
编码格式如下图,基本是四个字符代表一个汉字字符。
在这里插入图片描述

四、BIG5编码

称为繁体中文编码,主要在台湾地区使用。

五、GBK编码

作用:它是GB2312的扩展,转换后的格式和GBK2312一样,加入对繁体字的支持,兼容GB2312.

位数:使用2个字节表示,可表示21886个字符。

范围:高字节从81到FE,低字节从40到FE.

六、GB18030编码

作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK。

位数:它采用变字节表示(1ASCII, 2,4字节)。可表示27484个文字。

范围:1字节从00到7F;2字节高字节从81到FE,低字节从40到7E和80到FE;4字节第一三字节从81到FE,第二四字节从30到39.

加密方式:

对于有些url中的代表中文的部分并不是如上的格式编码的情况,可能是进行过加密。验证是否是标准加密方式加密的土方法,就是将汉字部分,直接进行搜索。如果能跳出多个不同的网站,可证明是某种标准的加密方式。
如图所示,我搜索的这段字符串实际代表的就是“云”这个汉字。在直接将加密后的字符串进行搜索后,跳出很多不同的网页。表明不止那个网站用这种加密,即这是一个标准统一的加密方式。
在这里插入图片描述
详细数一下位数,整个编码是32个数字。查询一下32位加密的方式,可能是MD5。通过代码逆向加密进行验证。
在这里插入图片描述
验证正确。

python3中,MD5加密归纳到了Hashlib库中了。
代码:

import hashlib
data = "云"
hashlib.md5(data.encode(encoding = 'utf-8')).hexdigest()

其他加密方式还有base64,RSA加密等。这些在爬虫工作中暂时还没有遇到。不展开记述。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值