2017-07-18 30 views
0

我想在應用程序的Apple商店網站上拼寫應用程序的名稱,並在終端上打印出來。python:錯誤:[<__ main __。類實例在0x>]

這裏是我的代碼:

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 

以下是我在終點站下車:

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

我的問題是:

爲什麼這個列表打印是[< .App實例在0x029C3EE0>] 並使用「for「循環打印列表中的元素是完全正確的?

+3

在列表內的'__repr__'方法被調用,而不是'__str__'。 –

回答

1

嘗試:

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

或實施的

__repr__代替__str__