we just met provides low-level control for HTTP clients.
When dealing with items available on the Web, though, it’s often
easier to code downloads with Python’s standard
urllib.request module, introduced in the FTP section earlier in this
chapter. Since this module is another way to talk HTTP, let’s expand
on its interfaces here.
Recall that given a URL,
urllib.request either downloads the
requested object over the Net to a local file or gives us a file-like
object from which we can read the requested object’s contents. As a
result, the script in Example 13-30 does the same work as
http.client script we just
wrote but requires noticeably less code.
Example 13-30. PP4E\Internet\Other\http-getfile-urllib1.py
""" fetch a file from an HTTP (web) server over sockets via urllib; urllib supports HTTP, FTP, files, and HTTPS via URL address strings; for HTTP, the URL can name a file or trigger a remote CGI script; see also the urllib example in the FTP section, and the CGI script invocation in a later chapter; files can be fetched over the net with Python in many ways that vary in code and server requirements: over sockets, FTP, HTTP, urllib, and CGI outputs; caveat: should run filename through urllib.parse.quote to escape properly unless hardcoded--see later chapters; """ import sys from urllib.request import urlopen showlines = 6 try: servername, filename = sys.argv[1:] # cmdline args? except: servername, filename = 'learning-python.com', ...