9

【Python爬虫】一招搞定发送中文HTTP请求头

 3 years ago
source link: https://blog.csdn.net/nokiaguy/article/details/114529373
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【Python爬虫】一招搞定发送中文HTTP请求头

有时需要将HTTP请求头的值设为中文,但如果直接设成中文,会抛出异常,例如,下面的代码为Chinese请求头设置了中文。

执行这段代码,会抛出如下的异常。

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)

这个异常表明HTTP请求头只能是英文字符和符号,不能是双字节的文字,如中文。为了解决这个问题,在设置HTTP请求头时需要将中文编码,然后发送到服务端后,在服务端用同样的规则解码。可以采用多种编码方式,例如url编码,base64编码,url编码就是在浏览器地址栏中如果输入中文,会将其转换为%xx的形式。如输入“中国”,会变成E4%B8%AD%E5%9B%BD。

对字符串url编码,需要使用urllib.parse模块的urlencode函数,解码要使用unquote函数,代码如下:

执行这段代码,会输出如下结果:

使用urlencode函数进行编码时,需要指定字典类型,不能直接对字符串进行编码。因为urlencode函数只能对url参数进行编码。

base64编码需要使用base64模块中的b64encode函数,解码使用b64decode函数,代码如下:

b64encode函数编码后返回的是bytes类型,需要使用str函数将其转换为字符串类型。b64decode函数解码时需要指定bytes类型的值,b64decode函数的返回值也是bytes类型,所以也需要str函数将该函数的返回值转换为字符串。

下面的例子演示了设置中文HTTP请求头,并对其解码的完整过程。

运行结果如图1所示。

format,png

图1 设置中文HTTP请求头

- EOF -

推荐阅读  点击标题可跳转

Python爬虫实战:抓取博客文章列表

卧槽,好强大的魔法,竟能让Python支持方法重载

Python装饰器(decorator)不过如此,是我想多了

这样合并Python字典,可以让程序的运行效率提高4倍

Python代码可以加密吗?Python字节码告诉你!

看我用元类(metaclass)花式创建Python类

你不知道__name__变量是什么意思吗?

Python生成器(Generator)最完美解释

关注「极客起源」公众号,加星标,不错过精彩技术干货

format,png


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK