广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python爬虫搞定发送中文HTTP请求头
  • 794
分享到

怎么用Python爬虫搞定发送中文HTTP请求头

2023-06-15 16:06:49 794人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“怎么用python爬虫搞定发送中文Http请求头”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python爬虫搞定发送中文HTTP请求头”吧!有时需要将HTTP请求头的值

本篇内容主要讲解“怎么用python爬虫搞定发送中文Http请求头”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python爬虫搞定发送中文HTTP请求头”吧!

怎么用Python爬虫搞定发送中文HTTP请求头

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

from urllib import request url = 'http://httpbin.org/post' headers = {     'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/72.0.3626.109 Safari/537.36',     'Host':'httpbin.org',     'Chinese':'李宁', } req = request.Request(url = url,headers=headers,method="POST") request.urlopen(req)

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

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函数,代码如下:

from urllib.parse import unquote,urlencode # 对中文进行编码 value = urlencode({'name':'李宁'}) print(value) # 对中文进行解码 print(unquote(value))

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

name=%E6%9D%8E%E5%AE%81 name=李宁

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

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

import base64 # 对中文进行编码 base64Value = base64.b64encode(bytes('Python从菜鸟到高手',encoding='utf-8')) print(str(base64Value,'utf-8')) # 对中文进行解码,并按utf-8编码格式将解码后的结果转换为字符串 print(str(base64.b64decode(base64Value),'utf-8'))

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

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

from urllib import request from urllib.parse import unquote,urlencode import base64 url = 'http://httpbin.org/post' headers = {     'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',     'Host':'httpbin.org',     'Chinese1':urlencode({'name':'李宁'}),  # 设置中文HTTP请求头,用url编码格式     # 设置中文HTTP请求头,用base64编码格式     'MyChinese':base64.b64encode(bytes('这是中文HTTP请求头',encoding='utf-8')),     'who':'Python scrapy' } dict = {     'name':'Bill',     'age':30 } data = bytes(urlencode(dict),encoding='utf-8') req = request.Request(url = url,data=data,headers=headers,method="POST") # 通过add_header方法添加中文HTTP请求头,url编码格式 req.add_header('Chinese2',urlencode({"国籍":"中国"})) response=request.urlopen(req) # 获取服务端的响应信息 value = response.read().decode('utf-8') print(value) import JSON # 将返回值转换为json对象 responseObj = json.loads(value) # 解码url编码格式的HTTP请求头 print(unquote(responseObj['headers']['Chinese1'])) # 解码url编码格式的HTTP请求头 print(unquote(responseObj['headers']['Chinese2'])) # 解码base64编码格式的HTTP请求头 print(str(base64.b64decode(responseObj['headers']['Mychinese']),'utf-8'))

到此,相信大家对“怎么用Python爬虫搞定发送中文HTTP请求头”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用Python爬虫搞定发送中文HTTP请求头

本文链接: https://www.lsjlt.com/news/280877.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Python爬虫搞定发送中文HTTP请求头
    本篇内容主要讲解“怎么用Python爬虫搞定发送中文HTTP请求头”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python爬虫搞定发送中文HTTP请求头”吧!有时需要将HTTP请求头的值...
    99+
    2023-06-15
  • JAVA中的HTTP请求怎么利用HttpClient实现发送
    JAVA中的HTTP请求怎么利用HttpClient实现发送?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。HttpClient介绍HttpClient 不是一个...
    99+
    2023-05-31
    java httpclient http
  • 怎么在python中利用requests发送请求
    这篇文章给大家介绍怎么在python中利用requests发送请求,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通...
    99+
    2023-06-14
  • 如何在Python中使用HTTP库发送GET请求并下载文件?
    当我们需要从互联网上获取数据时,常常需要使用HTTP协议来进行通信。Python中提供了许多HTTP库,其中最常用的是requests库。本文将介绍如何使用requests库发送GET请求并下载文件。 安装requests库 在Pyth...
    99+
    2023-09-21
    http 文件 面试
  • 如何使用Python中的HTTP库发送GET请求并下载文件?
    在Python中,我们可以使用HTTP库来发送网络请求,并下载文件。HTTP库是Python标准库的一部分,可以用于发送HTTP请求和接收HTTP响应。在这篇文章中,我们将介绍如何使用Python中的HTTP库来发送GET请求,并下载文件...
    99+
    2023-09-21
    http 文件 面试
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作