Flask自學筆記(3):處理URL引數

URL處理包含以下三種指令

  1. urllib.parse
  2. parse_qs
  3. parse_qsl

可以參考Python的文件說明:urllib.parse — Parse URLs into components — Python 3.12.0 documentation

舉例來說,下面的URL,即是由許多不同部分所構成:

我們可以用Python的內建函數 urllib 來拆解上述的URL,並取得感興趣的參數:

>>>from urllib import parse
>>>url = r'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'
>>>parseResult = parse.urlparse(url)
>>>print(parseResult)
ParseResult(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')

>>> param_dict = parse.parse_qs(parseResult.query)
>>> param_dict
{'q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']}
>>> q = param_dict['q'][0]
>>> q
'parse'

>>> parse.parse_qs('proxy=183.222.102.178:8080&task=XXXXX|5-3 2')
{'proxy': ['183.222.102.178:8080'], 'task': ['XXXXX|5-3 2']}

parse_qs與parse_qsl

引用套件:

在urlparse中有兩個函數:urlparse.parse_qs()和urlparse.parse_qsl()。這兩個函數都能解析url中的query字串

其中,

  1. urlparse.parse_qs 返回字典
  2. urlparse.parse_qsl 返回列表
from urllib import parse
url = r'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'
parseResult = parse.urlparse(url)
print(parseResult)
ParseResult(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')
print(parse.parse_qs(url))
{'https://docs.python.org/3.5/search.html?q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']}
print(parse.parse_qsl(url))
[('https://docs.python.org/3.5/search.html?q', 'parse'), ('check_keywords', 'yes'), ('area', 'default')]

urlencode

引用套件:

from urllib import parse

>>> from urllib import parse
>>> query = {
'name': 'walker',
'age': 99,
}

>>> parse.urlencode(query)
'name=walker&age=99'