Шаг 238.
Основы языка Python.
Взаимодействие с Интернетом. Разбор URL-адреса (окончание)

    На этом шаге мы рассмотрим остальные инструменты.

    Метод geturl() возвращает изначальный URL-адрес. Пример:

>>> url.geturl()
'http://www.admin.ru:80/test.php;st?var=5#metka'

    Выполнить обратную операцию (собрать URL-адрес из отдельных значений) позволяет функция urlunparse (<Последовательность>).

>>> from urllib.parse import urlunparse
>>> t = ('http', 'www.admin.ru:80', '/test.php', '', 'var=5', 'metka')
>>> urlunparse (t)
'http://www.admin.ru:80/test.php?var=5#metka'
>>> l = ['http', 'www.admin.ru:80', '/test.php', '', 'var=5', 'metka']
>>> urlunparse (l)
'http://www.admin.ru:80/test.php?var=5#metka'

    Вместо функции urlparse() можно воспользоваться функцией urlsplit (<URL-адрес>[, <Схема> [, <Разбор якоря>] ]). Ее отличие от urlparse() проявляется в том, что она не выделяет из интернет-адреса параметры. Функция возвращает объект SplitResuit с результатами разбора URL-адреса. Объект можно преобразовать в кортеж из следующих элементов: (scheme, netlос, path, query, fragment). Обратиться к значениям можно как по индексу, так и по названию атрибутов. Пример использования функции urlsplit() приведен ниже.

>>> from urllib.parse import  urlsplit
>>> url = urlsplit("http://www.admin.ru:80/test.php;st?var=5#metka")
>>> url
SplitResult(scheme='http', netloc='www.admin.ru:80', path='/test.php;st', 
query='var=5', fragment='metka')
>>> url[0], url[1], url[2], url[3], url[4]
('http', 'www.admin.ru:80', '/test.php;st', 'var=5', 'metka')
>>> url.scheme, url.netloc, url.hostname, url.port
('http', 'www.admin.ru:80', 'www.admin.ru', 80)
>>> url.path, url.query, url.fragment
('/test.php;st', 'var=5', 'metka')
>>> ftp = urlsplit("ftp://user:123456@mysite.ru")
>>> ftp.scheme, ftp.hostname, ftp.username, ftp.password
('ftp', 'mysite.ru', 'user', '123456')

    Выполнить обратную операцию (собрать URL-адрес из отдельных значений) позволяет функция urlunsplit (<Последовательность>).

>>> from urllib.parse import urlunsplit
>>> t = ('http', 'www.admin.ru:80', '/test.php;st', 'var=5', 'metka')
>>> urlunsplit(t)
'http://www.admin.ru:80/test.php;st?var=5#metka'

    На следующем шаге мы рассмотрим кодирование и декодирование строки запроса.




Предыдущий шаг Содержание Следующий шаг