2019年12月13日 星期五

parse_qs 用法

parse_qs 用法   parse_qs 屬於 urlparse 中解析網址的方法


urllib.parse.parse_qsqskeep_blank_values = Falsestrict_parsing = Falseencoding ='utf-8'errors ='replace'max_num_fields = None 

   描述

解析作為字符串參數給出的查詢字符串(類型為 application / x-www-form-urlencoded的數據)。數據作為字典返回。字典鍵是唯一的查詢變量名稱,而值是每個名稱的值列表。

可選參數keep_blank_values是一個標誌,指示是否應將百分比編碼的查詢中的空白值視為空白字符串。真值表示應將空格保留為空白字符串。默認的false值指示將忽略空白值並將其視為未包含空白值。

可選參數strict_parsing是一個標誌,指示如何處理解析錯誤。如果為false(默認值),錯誤將被忽略。如果為true,則錯誤會引發ValueError異常。

可選的encodingerrors參數指定bytes.decode()方法所接受的如何將百分比編碼的序列解碼為Unicode字符 

可選參數max_num_fields是要讀取的最大字段數。如果設置,則ValueError如果讀取的max_num_fields個字段以上 ,則拋出
使用urllib.parse.urlencode()功能(doseq 參數設置為True)將此類詞典轉換為查詢字符串。
在版本3.2中更改:添加編碼錯誤參數。
在3.8版中進行了更改:添加了max_num_fields參數。


parse
    • KK[pɑrs]
    • DJ[pɑ:z]
  • vt.
    從語法上分析(或說明)
  • vi.
    符合語法




from urllib import parse

url = 'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'
parseResult = parse.urlparse(url)
print(parseResult)


#獲取某個參數
param_dict = parse.parse_qs(parseResult.query)
print(param_dict)

#獲取陣列
q = param_dict['q'][0]
print(q)

#注意加號會被解碼,可能有時並不是我們想要的
param_dict = parse.parse_qs('proxy=183.222.102.178:8080&task=XXXXX|5-3+2')
print(param_dict)


-------------------------------------------------執行結果----------------------------------------------------------

ParseResult(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')
{'q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']}
parse
{'proxy': ['183.222.102.178:8080'], 'task': ['XXXXX|5-3 2']}



====================================================================


>>> from urllib import parse
>>> a = 'Id=123 & type=test1 %2C test2 %2C test3 & Date1=2018-03-25 & Date2=2018-04-26'
>>> parse.parse_qs(a).items()
dict_items([('Id', ['123 ']), (' type', ['test1 , test2 , test3 ']), (' Date1', ['2018-03-25 ']), (' Date2', ['2018-04-26'])])
>>> dict([(k,v[0]) for k,v in parse.parse_qs(a).items()])
{'Id': '123 ', ' type': 'test1 , test2 , test3 ', ' Date1': '2018-03-25 ', ' Date2': '2018-04-26'}
>>>







沒有留言:

張貼留言

print(dir(urllib.request.urlopen(url))) 實作

import urllib.request url = 'http://www.baidu.com/' response = urllib.request.urlopen(url) print(type(response)) print(dir(...