Contador de palabras de una web, en Python

Una vez me propusieron hacer el siguiente programa: "Un programa que cuente las palabras que aparecen en una web cualquiera y ordenarlas alfabéticamente". En ese momento me pregunté que para qué podría alguien querer algo así, supongo que para darle algún fin estadístico. En un principio pensé hacerlo en Perl, pero por alguna razón me vino a la cabeza BeutifulSoup para Python. Y parece que fue una buena idea. Aquí un pequeño ejemplo que funciona bien.

#!/usr/bin/python
 
import sys, re, string, urllib
# Se requiere el paquete BeautifulSoup
from bs4 import BeautifulSoup
 
# La URL es el primer argumento que recibe el programa.
url = sys.argv[1]
 
# Conversion de codigo HTML a texto plano.
texto = BeautifulSoup(urllib.urlopen(url)).get_text()

# Remplazo todos los caracteres ASCII de puntuacion por espacios e inicializa el Array
palabrasArray = re.sub('[%s]' % re.escape(string.punctuation), ' ', texto).split()
 
# Ordenacion sin repeticion de todos los elementos del Array
numero = 0
for i in sorted(set(palabrasArray)):
    # Imprime solo las palabras con caracteres alfabeticos.
    if (i.isalpha() == True):
        numero += 1
        print("%.3d %s" % (numero, i))

Un ejemplo de uso sería:

python contadorDePalabras.py http://www.gnu.org/

Y tiene una salida como esta:

001 About
002 Access
003 Action
004 Add
005 Allan
006 Also
007 America
008 April
009 Art
010 Attribution
011 BY
012 C
013 CC
014 Call
015 Can
016 Canada
017 Christopher
018 Chrome
019 Claim
020 Common
021 Commons
...

Seguro que se puede hacer mejor y mas profesional, pero así de primeras cumple su función.