python: สร้างสคริปต์เก็บเนื้อหาเว็บเพจ

จากตอนก่อน เราสามารถนำมาสร้างสคริปต์ง่าย ๆ เอาไว้เก็บเนื้อหาของหน้าเว็บได้ดังนี้
$ vi d.getweb.py

#!/usr/bin/env python
# SAVE CONTENT OF WEB PAGE TO FILE
import sys, os, urllib

def usage(progname):
    print "Usage: %s URL FILENAME" % (progname)
    print "Save content of web page to file."


def cannotopenfile(filename="",readwrite="r"):
    if readwrite=="r":
        msg=" reading"
    else:
        msg=" writing"

    print "Cannot open file %s for %s." % (filename, readwrite)


def genfilename(filename="",ext="new"):
    if filename=="":
        return ""
    if ext.lower()!="new" and ext.lower()!="bak":
        ext="bak"
    if os.path.exists(filename+"."+ext):
        i=0
        while os.path.exists(filename+"."+ext+str(i)) and (i < 1000):
            i=i+1
        if i>999:
            return ""
        return filename+"."+ext+str(i)
    else:
        return filename+"."+ext
    #

if __name__=="__main__":
    progname=os.path.basename(sys.argv[0])
    try:
        url=sys.argv[1]
        filename=sys.argv[2]
    except:
        usage(progname)
        sys.exit(1)
    #
    try:
        if os.path.exists(filename):
            bakfile=genfilename(filename,"bak")
            os.rename(filename,bakfile)
    except: 
        cannotopenfile(filename,"w")
        sys.exit(1)
    #   
    try:
        data=urllib.urlopen(url).read()
    except:
        print "Cannot open %s." % (url)
        sys.exit(1)
    #   
    f=open(filename,"w")
    f.write(data)
    f.close()
    print "Save %s to %s success." % (url, filename)

เรียกใช้งานด้วยคำสั่ง
./d.getweb.py http://WEB.TO.GET FILENAME.EXT