Правильный анализ параметров вложенного URL-запроса в python - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь проанализировать часть запроса URL-адреса и получить уникальные имена переменных запроса.

from urllib.parse import  urlparse, parse_qs
unquoted_url = '?id=test+staging@test.io&p=/#/class/my_finance&e={"name":"asset_download","payload":{"filename":"my_finance.pdf","linkParams":"client=staging&ui=1.5.14&data=1.15.2s"}}&t=1588369315106&pl={"firefox":true,"version":"75.0","versionNumber":75,"mac":true,"desktop":true,"name":"firefox","platform":"mac"}&cb=1587896316419'

parsed = urlparse(unquoted_url)

Применение parse_qs к parsed.query+parsed.fragment дает следующее:

print(parse_qs(parsed.query + parsed.fragment))

{'id': ['test staging@test.io'],
 'p': ['//class/my_finance'],
 'e': ['{"name":"asset_download","payload":{"filename":"my_finance.pdf","linkParams":"client=staging'],
 'ui': ['1.5.14'],
 'data': ['1.15.2s"}}'],
 't': ['1588369315106'],
 'pl': ['{"firefox":true,"version":"75.0","versionNumber":75,"mac":true,"desktop":true,"name":"firefox","platform":"mac"}'],
 'cb': ['1587896316419']}

Как мне сделать переменные 'ui' и 'data' как часть "linkParams" в более широком ключе 'e' в словаре? parse_qs, кажется, разделяет их на основе '&' разделителя.

...