Как извлечь указанный текст в HTML с помощью SGMLParser - PullRequest
1 голос
/ 26 февраля 2012

я создаю расширенный класс 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 title и Simple text как просто вывести текст между тегом <title>?

1 Ответ

0 голосов
/ 26 февраля 2012

Действительно, вы можете просто добавить жестко запрограммированную регистрацию в 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

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

...