Parse URLs into components
==========================
Parse URLs into components.
This module defines a standard interface to break Uniform Resource
Locator (URL) strings up in components (addressing 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 Internet RFC on Relative
Uniform Resource Locators (and discovered a bug in an earlier draft!).
It defines the following functions:
`urlparse(urlstring[, default_scheme[, 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:
`SCHEME://NETLOC/PATH;PARAMETERS?QUERY#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 PATH
component, which is retained if present.
Example:
urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
yields the tuple
('http', 'www.cwi.nl:80', '/%7Eguido/Python.html', '', '', '')
If the 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 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 `1'.
`urlunparse(tuple)'
Construct a URL string from a tuple as returned by `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).
`urljoin(base, url[, allow_fragments])'
Construct a full ("absolute") URL by combining a "base URL" (BASE)
with a "relative URL" (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:
urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')
yields the string
'http://www.cwi.nl/%7Eguido/FAQ.html'
The ALLOW_FRAGMENTS argument has the same meaning as for
`urlparse()'.
See also:
*RFC1738 Uniform Resource Locators (URL)*
This specifies the formal syntax and semantics of absolute
URLs.
*RFC1808 Relative Uniform Resource Locators*
This Request For Comments includes the rules for joining an
absolute and a relative URL, including a fair normal of
"Abnormal Examples" which govern the treatment of border
cases.
*RFC2396 Uniform Resource Identifiers (URI): Generic Syntax*
Document describing the generic syntactic requirements for
both Uniform Resource Names (URNs) and Uniform Resource
Locators (URLs).