parse - Parámetros de consulta URL para dict python
url unquote python 3 (4)
Para Python 2.7
In [14]: url = "http://www.example.org/default.html?ct=32&op=92&item=98"
In [15]: from urlparse import urlparse, parse_qsl
In [16]: parse_url = urlparse(url)
In [17]: query_dict = dict(parse_qsl(parse_url.query))
In [18]: query_dict
Out[18]: {''ct'': ''32'', ''item'': ''98'', ''op'': ''92''}
¿Hay alguna forma de analizar una URL (con alguna biblioteca de Python) y devolver un diccionario de Python con las claves y los valores de una parte de parámetros de consulta de la URL?
Por ejemplo:
url = "http://www.example.org/default.html?ct=32&op=92&item=98"
rendimiento esperado:
{''ct'':32, ''op'':92, ''item'':98}
Para Python 3, los valores del dict de parse_qs
están en una lista, porque puede haber múltiples valores. Si solo quieres el primero:
>>> from urllib.parse import urlsplit, parse_qs
>>>
>>> url = "http://www.example.org/default.html?ct=32&op=92&item=98"
>>> query = urlsplit(url).query
>>> params = parse_qs(query)
>>> params
{''item'': [''98''], ''op'': [''92''], ''ct'': [''32'']}
>>> dict(params)
{''item'': [''98''], ''op'': [''92''], ''ct'': [''32'']}
>>> {k: v[0] for k, v in params.items()}
{''item'': ''98'', ''op'': ''92'', ''ct'': ''32''}
Si prefiere no usar un analizador:
url = "http://www.example.org/default.html?ct=32&op=92&item=98"
url = url.split("?")[1]
dict = {x[0] : x[1] for x in [x.split("=") for x in url[1:].split("&") ]}
Use la biblioteca urllib.parse
:
>>> from urllib import parse
>>> url = "http://www.example.org/default.html?ct=32&op=92&item=98"
>>> parse.urlsplit(url)
SplitResult(scheme=''http'', netloc=''www.example.org'', path=''/default.html'', query=''ct=32&op=92&item=98'', fragment='''')
>>> parse.parse_qs(parse.urlsplit(url).query)
{''item'': [''98''], ''op'': [''92''], ''ct'': [''32'']}
>>> dict(parse.parse_qsl(parse.urlsplit(url).query))
{''item'': ''98'', ''op'': ''92'', ''ct'': ''32''}
Los urllib.parse.parse_qs()
y urllib.parse.parse_qsl()
analizan cadenas de consulta, teniendo en cuenta que las claves pueden aparecer más de una vez y que el orden puede ser importante.
Si todavía está en Python 2, urllib.parse
se llamó urlparse
.