2017-06-14 1 views
1

Dears,Comment recueillir les données du HTMLParser en Python 3

je dois collecter les données dans le ci-dessous HTML dans un tableau de chaînes

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

donc je le ci-dessous, mais

class MyHTMLParser(HTMLParser): 

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

mais il est toujours vide

Répondre

1

La méthode feed est l'analyse d'un élément HTML à la fois, et le remettre à la méthode handle_data. La valeur de retour de feed est None, c'est pourquoi votre liste est vide. Si vous souhaitez conserver toutes les données dans l'analyseur, vous devez ajouter une structure de données dans la méthode __init__(), comme list, inclure les données dans la méthode handle_data et implémenter une autre méthode qui renvoie vos données, par exemple:

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