Опубликован: 22.12.2005 | Уровень: для всех | Доступ: платный
Лекция 9:

Сетевые приложения на Python

Функции для анализа URL

Согласно документу RFC 2396 URL должен строиться по следующему шаблону:

scheme://netloc/path;parameters?query#fragment

где

scheme

Адресная схема. Например: http, ftp, gopher.

netloc

Местонахождение в сети.

path

Путь к ресурсу.

params

Параметры.

query

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

fragment

Идентификатор фрагмента.

Одна из функций уже использовалась для формирования URL - urllib.urlencode(). Кроме нее в модуле urllib имеются и другие функции:

quote(s, safe='/')

Функция экранирует символы в URL, чтобы их можно было отправлять на web-сервер. Она предназначена для экранирования пути к ресурсу, поэтому оставляет '/' как есть. Например:

>>> urllib.quote("rnd@onego.ru")
'rnd%40onego.ru'
>>> urllib.quote("a = b + c")
'a%20%3D%20b%20%2B%20c'
>>> urllib.quote("0/1/1")
'0/1/1'
>>> urllib.quote("0/1/1", safe="")
'0%2F1%2F1'
quote_plus(s, safe='')

Функция экранирует некоторые символы в URL (в строке запроса), чтобы их можно было отправлять на web-сервер. Аналогична quote(), но заменяет пробелы на плюсы.

unquote(s)

Преобразование, обратное quote(). Пример:

>>> urllib.unquote('a%20%3D%20b%20%2B%20c')
'a = b + c'

Преобразование, обратное quote_plus(). Пример:

>>> urllib.unquote_plus('a+=+b+%2B+c')
'a = b + c'

Для анализа URL можно использовать функции из модуля urlparse:

urlparse(url, scheme='', allow_fragments=1)

Разбирает URL в 6 компонентов (сохраняя экранирование символов): scheme://netloc/path;params?query#frag

urlsplit(url, scheme='', allow_fragments=1)

Разбирает URL в 5 компонентов (сохраняя экранирование символов): scheme://netloc/path?query#frag

urlunparse((scheme, netloc, url, params, query, fragment))

Собирает URL из 6 компонентов.

urlunsplit((scheme, netloc, url, query, fragment))

Собирает URL из 5 компонентов.

Пример:

>>> from urlparse import urlsplit, urlunsplit
>>> URL = "http://google.com/search?q=Python"
>>> print urlsplit(URL)
('http', 'google.com', '/search', 'q=Python', '')
>>> print urlunsplit(
...     ('http', 'google.com', '/search', 'q=Python', ''))
http://google.com/search?q=Python

Еще одна функция того же модуля urlparse позволяет корректно соединить две части URL - базовую и относительную:

>>> import urlparse
>>> urlparse.urljoin('http://python.onego.ru', 'itertools.html')
'http://python.onego.ru/itertools.html'
Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Павел Ялганов
Павел Ялганов

Скажите экзамен тоже будет ввиде теста? или там будет какое то практическое интересное задание?

Максим Чиндясов
Максим Чиндясов
Россия, Нижний Новгород
Ольга Коваль
Ольга Коваль
Беларусь, Минск