Je ne reviens ni sur la constitution de l'arbre par le parser lxml, ni sur la navigation dans l'arbre ni sur la recherche. J'explique ici comment modifier l'arbre à partir d'un exemple.
Pour la réalisation de mon moteur de recherche de bougies parfumées, www.les-bougies.com il m'a fallu parfois extraire de blocs de texte les données textuelles pertinentes.
La façon habituelle de procéder est d'identifier le bloc et de faire un get_text() mais si ce bloc contient du javascript on le récupère aussi. Il faut donc l'enlever au préalable.
for x in bsObj.findAll('script'):
bsObj.script.extract()
On procède de la même façon pour remplacer, insérer, ...
Contrairement à ce qu'on peut penser cette opération arrive de temps en temps pour des cas particuliers.