На этом шаге мы рассмотрим функцию, выполняющую эту операцию.
Очень часто в коде Web-страниц указываются не абсолютные URL-адреса, а относительные. При относительном URL-адресе путь определяется с учетом местоположения страницы, на которой находится ссылка, или значения параметра href тега <base>. Преобразовать относительную ссылку в абсолютный URL-адрес позволяет функция urljoin() из модуля urllib.parse. Формат функции:
urljoin(<Базовый URL-адрес>, <Относительный или абсолютный URL-адрес> [, <Разбор якоря>])
Для примера рассмотрим преобразование различных относительных интернет-адресов.
>>> from urllib.parse import urljoin >>> urljoin('http://www.admin.ru/fl/f2/test.html', 'file.html') 'http://www.admin.ru/fl/f2/file.html' >>> urljoin('http://www.admin.ru/f1/f2/test.html', 'f3/file.html') 'http://www.admin.ru/f1/f2/f3/file.html' >>> urljoin('http://www.admin.ru/f1/f2/test.html', '/file.html') 'http://www.admin.ru/file.html' >>> urljoin('http://www.admin.ru/f1/f2/test.html', './file.html') 'http://www.admin.ru/f1/f2/file.html' >>> urljoin('http://www.admin.ru/f1/f2/test.html', '../file.html') 'http://www.admin.ru/f1/file.html' >>> urljoin('http://www.admin.ru/f1/f2/test.html', '../../file.html') 'http://www.admin.ru/file.html' >>> urljoin('http://www.admin.ru/f1/f2/test.html', '../../../file.html') 'http://www.admin.ru/../file.html'
В последнем случае мы специально указали уровень относительности больше, чем нужно. Как видно из результата, в таком случае формируется некорректный интернет-адрес.
На следующем шаге мы рассмотрим разбор HTML-эквивалентов.