2012-02-26 2 views
1

я создать класс расширенный SGMLParser:как извлечь указанный текст в HTML с использованием SGMLParser

class URLLister(SGMLParser): 

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

    def start_title(self, attrs): 
     pass 

    def handle_data(self, data): 
     print data 

очень простой код. IMO start_title был вызван, когда он столкнулся с тегом <title>, и handle_data был вызван, когда он наткнулся на обычный текст. теперь я хочу извлечь текст между <title> и </title>, например.

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

я хочу, чтобы напечатать Webpage title между <title> тегами, но с использованием handle_data тега я буду выводить все простой текст, в том числе и Webpage titleSimple text. как просто выводить текст между тегом <title>?

ответ

0

Действительно, вы можете просто добавить жестко запрограммированный проверку в handle_data следующим образом:

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 

Я не уверен, если это то, что вы хотите точно, и я уверен, что есть более элегантный ответ ,

 Смежные вопросы

  • Нет связанных вопросов^_^