This commit was manufactured by cvs2svn to create tag 'r13beta1'.
[python/dscho.git] / Doc / liburllib.tex
blobb26228f12eb99d75aed073497312cd7a96189fe9
1 \section{Standard Module \sectcode{urllib}}
2 \stmodindex{urllib}
3 \index{WWW}
4 \index{World-Wide Web}
5 \index{URL}
7 \renewcommand{\indexsubitem}{(in module urllib)}
9 This module provides a high-level interface for fetching data across
10 the World-Wide Web. In particular, the \code{urlopen} function is
11 similar to the built-in function \code{open}, but accepts URLs
12 (Universal Resource Locators) instead of filenames. Some restrictions
13 apply --- it can only open URLs for reading, and no seek operations
14 are available.
16 it defines the following public functions:
18 \begin{funcdesc}{urlopen}{url}
19 Open a network object denoted by a URL for reading. If the URL does
20 not have a scheme identifier, or if it has \samp{file:} as its scheme
21 identifier, this opens a local file; otherwise it opens a socket to a
22 server somewhere on the network. If the connection cannot be made, or
23 if the server returns an error code, the \code{IOError} exception is
24 raised. If all went well, a file-like object is returned. This
25 supports the following methods: \code{read()}, \code{readline()},
26 \code{readlines()}, \code{fileno()}, \code{close()} and \code{info()}.
27 Except for the last one, these methods have the same interface as for
28 file objects --- see the section on File Objects earlier in this
29 manual. (It's not a built-in file object, however, so it can't be
30 used at those few places where a true built-in file object is
31 required.)
33 The \code{info()} method returns an instance of the class
34 \code{rfc822.Message} containing the headers received from the server,
35 if the protocol uses such headers (currently the only supported
36 protocol that uses this is HTTP). See the description of the
37 \code{rfc822} module.
38 \end{funcdesc}
40 \begin{funcdesc}{urlretrieve}{url}
41 Copy a network object denoted by a URL to a local file, if necessary.
42 If the URL points to a local file, or a valid cached copy of the
43 object exists, the object is not copied. Return a tuple (\var{filename},
44 \var{headers}) where \var{filename} is the local file name under which
45 the object can be found, and \var{headers} is either \code{None} (for
46 a local object) or whatever the \code{info()} method of the object
47 returned by \code{urlopen()} returned (for a remote object, possibly
48 cached). Exceptions are the same as for \code{urlopen()}.
49 \end{funcdesc}
51 \begin{funcdesc}{urlcleanup}{}
52 Clear the cache that may have been built up by previous calls to
53 \code{urlretrieve()}.
54 \end{funcdesc}
56 \begin{funcdesc}{quote}{string\optional{\, addsafe}}
57 Replace special characters in \var{string} using the \code{\%xx} escape.
58 Letters, digits, and the characters ``\code{_,.-}'' are never quoted.
59 The optional \var{addsafe} parameter specifies additional characters
60 that should not be quoted --- its default value is \code{'/'}.
62 Example: \code{quote('/\~conolly/')} yields \code{'/\%7econnolly/'}.
63 \end{funcdesc}
65 \begin{funcdesc}{unquote}{string}
66 Replace \samp{\%xx} escapes by their single-character equivalent.
68 Example: \code{unquote('/\%7Econnolly/')} yields \code{'/\~connolly/'}.
69 \end{funcdesc}
71 Restrictions:
73 \begin{itemize}
75 \item
76 Currently, only the following protocols are supported: HTTP, (versions
77 0.9 and 1.0), Gopher (but not Gopher-+), FTP, and local files.
78 \index{HTTP}
79 \index{Gopher}
80 \index{FTP}
82 \item
83 The caching feature of \code{urlretrieve()} has been disabled until I
84 find the time to hack proper processing of Expiration time headers.
86 \item
87 There should be a function to query whether a particular URL is in
88 the cache.
90 \item
91 For backward compatibility, if a URL appears to point to a local file
92 but the file can't be opened, the URL is re-interpreted using the FTP
93 protocol. This can sometimes cause confusing error messages.
95 \item
96 The \code{urlopen()} and \code{urlretrieve()} functions can cause
97 arbitrarily long delays while waiting for a network connection to be
98 set up. This means that it is difficult to build an interactive
99 web client using these functions without using threads.
101 \item
102 The data returned by \code{urlopen()} or \code{urlretrieve()} is the
103 raw data returned by the server. This may be binary data (e.g. an
104 image), plain text or (for example) HTML. The HTTP protocol provides
105 type information in the reply header, which can be inspected by
106 looking at the \code{Content-type} header. For the Gopher protocol,
107 type information is encoded in the URL; there is currently no easy way
108 to extract it. If the returned data is HTML, you can use the module
109 \code{htmllib} to parse it.
110 \index{HTML}
111 \index{HTTP}
112 \index{Gopher}
113 \stmodindex{htmllib}
115 \item
116 Although the \code{urllib} module contains (undocumented) routines to
117 parse and unparse URL strings, the recommended interface for URL
118 manipulation is in module \code{urlparse}.
119 \stmodindex{urlparse}
121 \end{itemize}