成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【Python爬蟲】一招搞定發送中文HTTP請求頭

開發 后端
有時需要將HTTP請求頭的值設為中文,但如果直接設成中文,會拋出異常,例如,下面的代碼為Chinese請求頭設置了中文。

[[385644]]

 有時需要將HTTP請求頭的值設為中文,但如果直接設成中文,會拋出異常,例如,下面的代碼為Chinese請求頭設置了中文。

  1. from urllib import request 
  2. url = 'http://httpbin.org/post' 
  3. headers = { 
  4.     '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'
  5.     'Host':'httpbin.org'
  6.     'Chinese':'李寧'
  7. req = request.Request(url = url,headers=headers,method="POST"
  8. request.urlopen(req) 

執行這段代碼,會拋出如下的異常。

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

這個異常表明HTTP請求頭只能是英文字符和符號,不能是雙字節的文字,如中文。為了解決這個問題,在設置HTTP請求頭時需要將中文編碼,然后發送到服務端后,在服務端用同樣的規則解碼??梢圆捎枚喾N編碼方式,例如url編碼,base64編碼,url編碼就是在瀏覽器地址欄中如果輸入中文,會將其轉換為%xx的形式。如輸入“中國”,會變成E4%B8%AD%E5%9B%BD。

對字符串url編碼,需要使用urllib.parse模塊的urlencode函數,解碼要使用unquote函數,代碼如下:

  1. from urllib.parse import unquote,urlencode 
  2. # 對中文進行編碼 
  3. value = urlencode({'name':'李寧'}) 
  4. print(value) 
  5. # 對中文進行解碼 
  6. print(unquote(value)) 

執行這段代碼,會輸出如下結果:

  1. name=%E6%9D%8E%E5%AE%81 
  2. name=李寧 

使用urlencode函數進行編碼時,需要指定字典類型,不能直接對字符串進行編碼。因為urlencode函數只能對url參數進行編碼。

base64編碼需要使用base64模塊中的b64encode函數,解碼使用b64decode函數,代碼如下:

  1. import base64 
  2. # 對中文進行編碼 
  3. base64Value = base64.b64encode(bytes('Python從菜鳥到高手',encoding='utf-8')) 
  4. print(str(base64Value,'utf-8')) 
  5. # 對中文進行解碼,并按utf-8編碼格式將解碼后的結果轉換為字符串 
  6. print(str(base64.b64decode(base64Value),'utf-8')) 

b64encode函數編碼后返回的是bytes類型,需要使用str函數將其轉換為字符串類型。b64decode函數解碼時需要指定bytes類型的值,b64decode函數的返回值也是bytes類型,所以也需要str函數將該函數的返回值轉換為字符串。

下面的例子演示了設置中文HTTP請求頭,并對其解碼的完整過程。

  1. from urllib import request 
  2. from urllib.parse import unquote,urlencode 
  3. import base64 
  4. url = 'http://httpbin.org/post' 
  5. headers = { 
  6.     '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'
  7.     'Host':'httpbin.org'
  8.     'Chinese1':urlencode({'name':'李寧'}),  # 設置中文HTTP請求頭,用url編碼格式 
  9.     # 設置中文HTTP請求頭,用base64編碼格式 
  10.     'MyChinese':base64.b64encode(bytes('這是中文HTTP請求頭',encoding='utf-8')), 
  11.     'who':'Python Scrapy' 
  12. dict = { 
  13.     'name':'Bill'
  14.     'age':30 
  15. data = bytes(urlencode(dict),encoding='utf-8'
  16. req = request.Request(url = url,data=data,headers=headers,method="POST"
  17. # 通過add_header方法添加中文HTTP請求頭,url編碼格式 
  18. req.add_header('Chinese2',urlencode({"國籍":"中國"})) 
  19. response=request.urlopen(req) 
  20. # 獲取服務端的響應信息 
  21. value = response.read().decode('utf-8'
  22. print(value) 
  23. import json 
  24. # 將返回值轉換為json對象 
  25. responseObj = json.loads(value) 
  26. # 解碼url編碼格式的HTTP請求頭 
  27. print(unquote(responseObj['headers']['Chinese1'])) 
  28. # 解碼url編碼格式的HTTP請求頭 
  29. print(unquote(responseObj['headers']['Chinese2'])) 
  30. # 解碼base64編碼格式的HTTP請求頭 
  31. print(str(base64.b64decode(responseObj['headers']['Mychinese']),'utf-8')) 

運行結果如圖1所示。

圖1 設置中文HTTP請求頭

本文轉載自微信公眾號「極客起源」,可以通過以下二維碼關注。轉載本文請聯系極客起源公眾號。

 

責任編輯:武曉燕 來源: 極客起源
相關推薦

2022-09-06 11:53:00

開發計算

2010-03-16 08:59:45

Windows 7純凈版安裝

2015-08-03 14:02:37

Windows 10升級

2020-10-20 08:01:30

MySQL密碼Windows

2020-12-31 13:17:57

手機電腦多屏協同

2023-12-18 08:24:09

LinuxPythonWord

2019-01-23 10:11:43

Python爬蟲IP

2022-01-25 13:00:52

前端設計優化

2021-12-13 06:56:46

TCP孤兒連接

2021-08-21 23:33:16

iOS蘋果系統

2025-04-18 09:49:48

2013-07-30 11:24:33

SAP“簡化IT 一招

2018-08-14 05:21:43

路由器網絡運維網絡

2021-01-25 05:41:25

Flash Fliqlo軟件

2021-11-22 11:30:37

JavaScript代碼瀏覽器

2021-08-02 05:16:36

IE技巧操作系統

2022-06-21 09:27:01

PythonFlaskREST API

2017-02-28 20:03:49

WIFI無線網卡

2024-05-31 14:04:18

2022-12-26 09:16:56

請求量代碼QPS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91在线看片 | 天天射影院 | 亚洲高清视频在线 | 国产精品99久 | 天天操天天干天天曰 | 久草在线高清 | 亚洲国产一区二区三区在线观看 | 精品久久一区 | 999精品视频 | 亚洲狠狠爱 | 亚洲精品色 | 欧美日产国产成人免费图片 | 91婷婷韩国欧美一区二区 | 久草新在线| 天天爽夜夜骑 | 曰批视频在线观看 | 日韩毛片免费看 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 午夜免费成人 | 亚洲精品一区二区三区蜜桃久 | 国产精品久久久久久 | 天天色综 | 成人免费在线观看 | 国产精品视频免费观看 | 欧美在线a | 激情的网站 | 91传媒在线观看 | 亚洲欧美精品国产一级在线 | 日本三级电影在线观看视频 | 九九九视频 | 日韩精品一区二区三区中文在线 | 91资源在线 | 亚洲色图婷婷 | 久久综合狠狠综合久久 | 久久精品久久久久久 | 成人午夜视频在线观看 | 91精品国产一区二区在线观看 | 国产激情三区 | 精品综合| av官网在线| 91久久综合亚洲鲁鲁五月天 |