urllib.parse

Предупреждение

данный модуль доступен на третьей ветки питона

urllib.parse.parse_qs(<строка запроса>, [, keep_blankvalues=False][, strict_parsing=False][, encoding='utf-8'][, errors='replace'])

разбирает строку запроса и возвращает словарь с ключами, содержащими названия параметров, и списка значений.

Параметры:
  • keep_blankvalues (bool) – если истина, то параметры, не имеющие значений внутри строки запроса, также будут добавлены в результат.
  • strict_parsing (bool) – если истина, то при наличии ошибки возбуждается исключение ValueError
  • encoding (str) – кодировка данных
  • errors (str) – уровень обработки ошибок
>>> s = "str=%D1%F2%F0%EE%EA"&E0&v=10&v=20&t="
>>> parse qs(s, encoding="cp1251")
{'str': ['Строка'], 'v': ['10', '20']}
>>> parse_qs(s, keep_Ыank_va1ues=True, encoding="cp1251")
{'t': ["], 'str': ['Строка'], 'v': ['10', '20'])
urllib.parse.parse_qsl(<строка запроса>, [, keep_blankvalues=False][, strict_parsing=False][, encoding='utf-8'][, errors='replace'])

аналогична parse_qs(), только возвращает список кортежей, разбирает строку запроса

Параметры:
  • keep_blankvalues (bool) – если истина, то параметры, не имеющие значений внутри строки запроса, также будут добавлены в результат.
  • strict_parsing (bool) – если истина, то при наличии ошибки возбуждается исключение ValueError
  • encoding (str) – кодировка данных
  • errors (str) – уровень обработки ошибок
>>> s = "str=%D1%F2%FO%EE%EA%EO&v=10&v=20&t="
>>> parse qsl(s, encoding="cpl251")
[('str', 'Строка'), ('v', '10'), ('v', '20')]
>>> parse_qsl(s, keep_blank_values=True, encoding="cp1251")
[('str', 'Строка'), ('v', '10'), ('v', '20'), ('t', ")]
urllib.parse.quote(<строка>[, safe='/'][, encoding=None][, errors=None])

заменяет все специальные симолы последовательностями %nn. Цифры, анг­лийские буквы и символы подчеркивания, точки и дефиса не кодируются. Пробелы преобразуются в последовательность %20.

Параметры:safe (str) – символы, которые преобразовывать нельзя
>>> quote("Cтpoкa", encoding="cp1251")
'%D1%F2%F0%EE%EA%E0'
>>> quote("Cтpoкa", encoding="utf-8")
'%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B0'
urllib.parse.quote_plus(<строка>[, safe='/'][, encoding=None][, errors=None])

функция аналогична функции quote(), но пробелы заменяются символом +, а символ / заменяется на %2F

Параметры:safe (str) – символы, которые преобразовывать нельзя
urllib.parse.quote_from_bytes(<последовательность байтов>[, safe='/'])

функция аналогична функции quote(), но в качестве первого параметра принимает последовательность байтов

urllib.parse.unquote(<строка>[, encoding='utf-8'][, errors='replace'])

заменяет последовательность %nn на соответсвующие символы. символ + не заменяется ничем

urllib.parse.unquote_plus(<строка>[, encoding='utf-8'][, errors='replace'])

заменяет последовательность %nn на соответсвующие символы. символ + заменяет пробелом

urllib.parse.urlencode(<объект> [, doseq=False][, safe=''][, encoding=None][, errors=None])

преобразовывает отдельные составляющие в строку запроса

Параметры:
  • объект – словарь или список кортежей (кортеж из 2х элементов)
  • doseq (bool) – если истина, то можно указать последовательность из нескольких значений во втором параметре кортежа
>>> urlencode({"str": "Строка 2", "var": 20}, encoding="cpl251")
'var=20&str='Шl%F2•;FO%EE%EA%E0+2'
>>> urlencode([("str", "Строка 2"), ("var", 20)], encodiпg="cp1251")
'str=%D1%F2%FO%EE%EA%E0+2&var=20'
urllib.parse.urljoin(<базовый урл>, <относитьльный или абсолютный урл>[, <разбор якоря>])

преобразует относитльный урл в абсолютный

>>> from urllib.parse import urljoin
>>> urljoin(http://admin.ru/f1/f2/test.html', 'file.html')
'http://admin.ru/fl/f2/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', 'f3/file.html')
'http://admin.ru/fl/f2/f3/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', '/file.html')
'http://admin.ru/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', './file.html')
'http://admin.ru/fl/f2/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', '../file.html')
'http://admin.ru/fl/file.html'
urllib.parse.urlparse(<url>[, <схема>[, <разбор_якоря>=False]])

возвращает ParseResult с результатом разбора адреса

Параметры:
  • схема – название протокола, если протокла нет в составе адреса
  • разбор_якоря (bool) – если лож, то якорь будетвходить в состав других атрибутов
>>> urlparse('http://ilnurgi.ru:80/test.php;st?var=5#metka')
ParseResult(scheme='http', netloc='ilnurgi.ru:80', path='/test.php', params='st', query='var=5', fragment='metka')
urllib.parse.urlsplit(<url>[, <схема>[, <разбор_якоря>=False]])

возвращает SplitResult с результатом разбора адреса

>>> urlsplit('http://ilnurgi.ru:80/test.php;st?var=5#metka')
SplitResult(scheme='http', netloc='ilnurgi.ru:80', path='/test.php', query='var=5', fragment='metka')
urllib.parse.urlunparse(<последовательность>)

возвращает строку, адрес, собранную из отдельных значений

>>> urlunparse(('http', 'ilnurgi.ru:80', '/test.php', '', 'var=5', 'metka'))
'http://ilnurgi.ru:80/test.php?var=5#metka'
urllib.parse.urlunsplit(<последовательность>)

возвращает строку, адрес, собранную из отдельных значений

>>> urlunsplit(('http', 'ilnurgi.ru:80', '/test.php', '', 'var=5', 'metka'))
'http://ilnurgi.ru:80/test.php?var=5#metka'
class urllib.parse.ParseResult

результат парсинга адреса

scheme

название протокола

netloc

название домена вместе с номером порта

path

путь

hostname

название домена в нижнем регистре

port

номер порта

params

параметры

query

строка запроса

fragment

якорь

username

имя пользователя

password

пароль

geturl()

возвращает адрес

class urllib.parse.SplitResult

результат парсинга адреса