Сообщить об ошибке.

Функция urlunparse() модуля urllib.parse в Python

Собирает URL-адрес из компонентов шестизначной последовательности

Синтаксис:

import urllib.parse

urllib.parse.urlunparse(parts)

Параметры:

  • parts - компоненты URL-адреса

Возвращаемое значение:

Описание:

Функция urlunparse() модуля urllib.parse объединяет элементы кортежа кортежа, возвращаемого функцией urllib.parse.urlparse() в полный URL-адрес старого образца в виде строки.

Аргумент parts может быть любым шестизначной последовательностью, поддерживающей итерацию.

Результат работы функции urllib.parse.urlunparse() может привести к немного отличающемуся, но эквивалентному URL-адресу, если URL-адрес, который был проанализирован изначально, имел ненужные разделители (например, '?' с пустым запросом).

Примеры использования функции urllib.parse.urlunparse():

Для примера соберем из отдельных компонентов строку URL:

'https://docs-python.ru/search/?text=isinstance&web=0#anchor'.

В документации сказано, что функция поддерживает любую шестизначную последовательность, поддерживающую итерацию. Следовательно для этой цели сгодится список.

Для начала получим список с шестью элементами. Так как начальное значение URL всегда известно, из него и получим этот список при помощи функции urllib.parse.urlparse().

>>> import urllib.parse
>>> base_url = 'https://docs-python.ru/'
>>> url_parts = list(urllib.parse.urlparse(base_url))
>>> url_parts
# ['https', 'docs-python.ru', '/', '', '', '']

Такие параметры URL как text=isinstance&web=0 нужно как то собирать и передавать в пятый элемент списка. Для этого есть функция urllib.parse.urlencode(), которая закодирует и соберет правильным образом параметры запроса, представленные в качестве словаря.

>>> import urllib.parse
>>> args = {'text'='isinstance', 'web'=0}
>>> query = urllib.parse.urlencode(args)
>>> query
# 'text=isinstance&web=0'

Теперь только осталось все компоненты URL передать в список и собрать его при помощи функции urllib.parse.urlunparse().

Смотрим что получилось:

# получено выше
>>> url_parts = ['https', 'docs-python.ru', '/', '', '', '']
>>> path = '/search/'
# получено выше
>>> query = 'text=isinstance&web=0'
>>> anchor = 'anchor'
# Добавляем компоненты в список
>>> url_parts[2] = path
>>> url_parts[4] = query
>>> url_parts[5] = anchor
>>> url_parts
# ['https', 'docs-python.ru', '/search/', '', 'text=isinstance&web=0', 'anchor']

# подставляем список в качестве аргумента в функцию
>>> urllib.parse.urlunparse(url_parts)
# 'https://docs-python.ru/search/?text=isinstance&web=0#anchor'