\section{Standard Module \sectcode{urlparse}}
\label{module-urlparse}
\stmodindex{urlparse}
\index{WWW}
\index{World-Wide Web}
\index{URL}
\indexii{URL}{parsing}
\indexii{relative}{URL}

\renewcommand{\indexsubitem}{(in module urlparse)}

This module defines a standard interface to break URL strings up in
components (addessing scheme, network location, path etc.), to combine
the components back into a URL string, and to convert a ``relative
URL'' to an absolute URL given a ``base URL''.

The module has been designed to match the current Internet draft on
Relative Uniform Resource Locators (and discovered a bug in an earlier
draft!).

It defines the following functions:

\begin{funcdesc}{urlparse}{urlstring\optional{, default_scheme\optional{, allow_fragments}}}
Parse a URL into 6 components, returning a 6-tuple: (addressing
scheme, network location, path, parameters, query, fragment
identifier).  This corresponds to the general structure of a URL:
\code{\var{scheme}://\var{netloc}/\var{path};\var{parameters}?\var{query}\#\var{fragment}}.
Each tuple item is a string, possibly empty.
The components are not broken up in smaller parts (e.g. the network
location is a single string), and \% escapes are not expanded.
The delimiters as shown above are not part of the tuple items,
except for a leading slash in the \var{path} component, which is
retained if present.

Example:

\bcode\begin{verbatim}
urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
\end{verbatim}\ecode
%
yields the tuple

\bcode\begin{verbatim}
('http', 'www.cwi.nl:80', '/%7Eguido/Python.html', '', '', '')
\end{verbatim}\ecode
%
If the \var{default_scheme} argument is specified, it gives the
default addressing scheme, to be used only if the URL string does not
specify one.  The default value for this argument is the empty string.

If the \var{allow_fragments} argument is zero, fragment identifiers
are not allowed, even if the URL's addressing scheme normally does
support them.  The default value for this argument is \code{1}.
\end{funcdesc}

\begin{funcdesc}{urlunparse}{tuple}
Construct a URL string from a tuple as returned by \code{urlparse}.
This may result in a slightly different, but equivalent URL, if the
URL that was parsed originally had redundant delimiters, e.g. a ? with
an empty query (the draft states that these are equivalent).
\end{funcdesc}

\begin{funcdesc}{urljoin}{base\, url\optional{\, allow_fragments}}
Construct a full (``absolute'') URL by combining a ``base URL''
(\var{base}) with a ``relative URL'' (\var{url}).  Informally, this
uses components of the base URL, in particular the addressing scheme,
the network location and (part of) the path, to provide missing
components in the relative URL.

Example:

\bcode\begin{verbatim}
urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')
\end{verbatim}\ecode
%
yields the string

\bcode\begin{verbatim}
'http://www.cwi.nl/%7Eguido/FAQ.html'
\end{verbatim}\ecode
%
The \var{allow_fragments} argument has the same meaning as for
\code{urlparse}.
\end{funcdesc}
