Question

j'ai créer une classe étendue SGMLParser:

class URLLister(SGMLParser):

    def __init__(self):
        SGMLParser.__init__(self)

    def start_title(self, attrs):
        pass

    def handle_data(self, data):
        print data

très très simple code.IMO start_title a été invoquée quand il est venu à travers <title> tag, et handle_data a été invoquée quand il est venu à travers le texte normal.maintenant, je veux extraire le texte entre <title> et </title>, par exemple

<html><head><title>Webpage title</title></head><body>Simple text</body></html>

je veux imprimer le Webpage title entre <title> tag, mais en utilisant handle_data tag je vais la production de tous les simples de texte, y compris Webpage title et Simple text.comment simplement la sortie du texte entre <title> tag?

Était-ce utile?

La solution

Vraiment, vous pouvez simplement ajouter une codé en dur à vérifier handle_data comme suit:

def handle_data(self, data):
    tag = self.get_starttag_text().replace("<","").replace(">","")
    tag_words = tag.split(" ")
    if len(tag_words) > 0 and tag_words[0].endswith("title"):
        print data

Je ne suis pas sûr si c'est ce que tu voulais exactement, et je suis sûre qu'il y a de plus élégant réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top