2017-06-14 1 views
1

Dears, muß sammeln, umWie die Daten des HTMLParser in Python 3

ich in einem Array von String-

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>) 

so habe ich die folgenden aber

die Daten in den unten stehenden HTML sammeln
class MyHTMLParser(HTMLParser): 

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

aber es ist immer leer

Antwort

1

Die feed Methode wird ein HTML-Element-Parsing zu einer Zeit, und übergibt es an die handle_data Methode. Der Rückgabewert von feed ist None, deshalb ist Ihre Liste leer. Wenn Sie alle in den Parser eingegebenen Daten beibehalten möchten, müssen Sie eine Datenstruktur in der __init__()-Methode hinzufügen, z. B. list, die Daten in die Methode handle_data einfügen und eine andere Methode implementieren, die Ihre Daten zurückgibt, z.

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()) 
Verwandte Themen