#!/usr/bin/env python3

import urllib.request
import re

def main():

   ac = input('Enter the area code to compute: ')
   url = 'http://www.allareacodes.com/%s' % ac
   body = requestPage(url)

   # Find the region we are intreasted in.
   findStart = re.search(r'Area Code ' + ac + ' Prefixes', body)
   findEnd = re.search(r'Most Searched Numbers', body)

   try:
       startSpan = findStart.span()[1]
       endSpan = findEnd.span()[0]
   except AttributeError:
       print('Error: Area code is not valid.')
       quit()

   getPrefix = re.findall(r'\(\d{3}\) \d{3}', body[startSpan:endSpan])
   prefix = cleanList(getPrefix) # Removes '(305) '

   makeFile(ac, prefix)

def requestPage(url):
   req = urllib.request.Request(url)
   response = urllib.request.urlopen(req)
   return response.read().decode('utf-8')

def cleanList(getPrefix):
   prefix = []
   for fix in getPrefix:
       prefix.append(fix[6:])
   return prefix

def makeFile(ac, prefix):
   textFile = open('%s_numbers' % ac, 'w')

   for x in prefix:
       for i in range(10000):
           textFile.write('%s%s%s\n' % (ac, x, str(i).zfill(4)))

   textFile.close()
   print('Done. Area code %s had %s prefixes' % (ac, len(prefix)))

if __name__ == '__main__':
   main()

1 http://packetfactory.wordpress.com/2012/06/29/generate-10-digit-phone-numbers-using-crunch-in-backtrack/
2 http://www.josephlandry.com/2011/01/phone-number-dictionary-file-for.html
3 http://www.nanpa.com
4 http://pastebin.com/v2jJHYZ2