2017-07-18 1 views
0

Je veux scrabble le nom de l'APP sur le site Web de l'Apple Store et l'imprimer sur le terminal.python: Erreur: [<__ main __. Instance de classe à 0x>]

Voici mon code:

from lxml import html 
import requests 

class AppCrawler: 
    def __init__(self,starting_url,depth): 
     self.starting_url = starting_url 
     self.depth = depth 
     self.apps = [] 

    def crawl(self): 
     self.get_app_from_link(self.starting_url) 

    def get_app_from_link(self,link): 
     start_page = requests.get(link) 
     tree = html.fromstring(start_page.text) 

     name = tree.xpath('//h1[@itemprop="name"]/text()')[0] 
     app = App(name) 
     self.apps.append(app) 

class App: 
    def __init__(self,name): 
     self.name=name 
    def __str__(self): 
     return ("Name:" + self.name) 

crawler = AppCrawler('https://itunes.apple.com/us/app/candy-crush-saga/id553834731',0) 
crawler.crawl() 
################ print the list ################################## 
print crawler.apps 
################ print the element in the list ################### 
for app in crawler.apps: 
    print app 

Voici ce que je reçois dans le terminal:

[<__main__.App instance at 0x029C3EE0>] 
AppName:Candy Crush Saga 

Ma question est:

pourquoi l'impression de la liste est [< principale. Inst instance à 0x029C3EE0>] et utilisez le "pour dans "boucle pour imprimer l'élément dans la liste est exactement exact ??

+3

Dans la liste, la méthode '__repr__' est appelée, non' __str__'. –

Répondre

1

essayer:

for app in crawler.apps: 
    print str(app) 

ou mettre en œuvre

__repr__ au lieu de __str__