2017-06-14 64 views
1

逗人,如何收集的HTMLParser的數據在Python 3個

我需要收集的數據在下面的HTML字符串

parser.feed(<table><tr><td><a href="http://rads.stackoverflow.com/amzn/click/B00JX1ZS5O" target="_blank"><img src="https://images-na.ssl-images-amazon.com/images/I/41B39oDSGQL._SL160_.jpg" alt="Product Image" style='border:0'/></a></td><td><tr><td>List Price: <strike>$34.99</strike></td></tr><tr><td><b>Deal Price: $7.99</b></td></tr><tr><td>You Save: $2.00 (20%)</td></tr><tr><td>Sabrent 4-Port USB 3.0 Hub with Individual Power Switches and LEDs (HB-UM43)</td></tr><tr><td>Expires Jun 15, 2017</td></tr></td></tr></table>) 

的陣列中,所以我用下面的,但

class MyHTMLParser(HTMLParser): 

    def handle_data(self, data): 
     self.Datacollected(data) 
     return (data) 
parser = MyHTMLParser() 
Collector=[] 
Collector.append[parser.feed("HTML Code HERE")] 

但它始終是空

回答

1

feed方法是解析一個HTML元素一次,並將其交給handle_data方法。 feed的返回值是None,這就是爲什麼您的列表爲空。如果要保留輸入解析器的所有數據,則需要在__init__()方法(如list)中添加一些數據結構,在handle_data方法中將數據包括在其中,並實現返回數據的另一種方法,例如:

class MyHTMLParser(HTMLParser): 

    def __init__(self, **kwargs, *args): 
     self.d = [] 
     super().__init__() 

    def handle_data(self, data): 
     self.d.append(data) 
     return (data) 

    def return_data(self): 
     return self.d 

collector=[] 
parser = MyHTMLParser() 
parser.feed("HTML Code HERE") 
collector.append(parser.return_data())