code: def table(args):
      
      import csv
  
      p = OptionParser(table.__doc__)
      p.set_sep(sep=",")
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      htmlfile, = args
      page = open(htmlfile).read()
      soup = BeautifulSoup(page)
  
      for i, tabl in enumerate(soup.findAll('table')):
          nrows = 0
          csvfile = htmlfile.rsplit(".", 1)[0] + ".{0}.csv".format(i)
          writer = csv.writer(open(csvfile, "w"), delimiter=opts.sep)
          rows = tabl.findAll('tr')
          for tr in rows:
              cols = tr.findAll('td')
              if not cols:
                  cols = tr.findAll('th')
  
              row = []
              for td in cols:
                  try:
                      cell = "".join(td.find(text=True))
                      cell = unescape(cell)
                  except TypeError:
                      cell = ""
                  row.append(cell)
              writer.writerow(row)
              nrows += 1
          logging.debug("Table with {0} rows written to `{1}`.".format(nrows, csvfile))
docs: %prog table page.html
  
      Convert HTML tables to csv.