Per integrazione se faccio una sola classe con la FUNZIONE che gli passa il file mi funziona tutto:
ES:
codice:
import html
class HTMLNode(object):
def __init__(self, tag, attr, content, closed=True):
self.tag = tag
self.attr = attr # dizionario degli attributi, se non ci
# sono, e' un dizionario vuoto
self.content = content # se tag = '_text_' contiene il testo,
# altrimenti una lista dei nodi figli
self.closed = closed # True se il nodo ha la chiusura
def istext(self): # per distinguere i nodi testo
return self.tag == '_text_'
def print_tree(self, level=0):
'''Stampa l'albero mostrando la struttura tramite indentazione'''
print ' '*level+str(self),
if self.istext():
print repr(self.content)
else:
print
for node in self.content:
node.print_tree(level+1)
def __str__(self):
'''Ritorna una rapprentazione testuale del nodo'''
left, right = ('', '') if self.tag == '_text_' else ('<', '>')
s = left+self.tag
for k, v in self.attr.items():
s += ' '+k+'="'+v+'"'
return s + right
def count(self):
'''Ritorna il numero di nodi dell'albero'''
cnt = 1
if not self.istext():
for node in self.content:
cnt += node.count()
return cnt
def ParsedHTML(htmlfile):
'''Esegue il parsing HTML del file fhtml e ritorna la radice
dell'albero di parsing'''
with open(htmlfile, 'U') as f:
root = html.parse(f.read(), HTMLNode)
return root
###########################################################################
p = ParsedHTML('file03_01_in.html')
print p.print_tree()
print p.count()
perche' facendo al posto dlela funzione la seconda classe non va?