1

我创建了一个类扩展的 SGMLParser:

class URLLister(SGMLParser):

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

    def start_title(self, attrs):
        pass

    def handle_data(self, data):
        print data

非常非常简单的代码。IMOstart_title在遇到<title>标签handle_data时被调用,在遇到普通文本时被调用。现在我想提取 and 之间的文本<title></title>例如

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

我想打印Webpage titlebetween<title>标签,但使用handle_data标签我将输出所有简单的文本,包括Webpage titleand Simple text。如何简单地输出<title>标签之间的文本?

4

1 回答 1

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

我不确定这是否正是您想要的,而且我敢肯定会有更优雅的答案。

于 2012-02-26T04:58:16.620 回答