2012-02-26 28 views
1

提取HTML中指定的文本我創建一個類擴展SGMLParser這樣:如何使用SGMLParser中

class URLLister(SGMLParser): 

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

    def start_title(self, attrs): 
     pass 

    def handle_data(self, data): 
     print data 

非常非常簡單的代碼。在遇到<title>標記時調用了IMO start_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 

我不知道如果這是你想要的究竟是什麼,我敢肯定有一個更優雅的答案。