Java ha scritto: > Salve a tutti, sono nuovo di questa mailing list e del pythone più in > generale! > > Prima di fare la domanda, preannuncio che mi sono occupato di questa > cosa per un paio di giorni, e che essendo completamente niubbo con il > python potrei aver fatto qualche cavolata :-D > > Veniamo alla nota dolente, devo fare un progetto per > l'università(costruire una rete sociale di video di youtube) che > comporta anche la scrittura di un piccolo crawler. Ho pensato di usare > python sostanzialmente perché non lo conoscevo, e così approfitto > dell'esame per imparare un nuovo linguaggio... > > Senza entrare troppo nei dettagli, ho fatto un thread che si occupa di > fare il crawling di una pagina iterando per in base alla profondità di > crawling. Cioè se questa è 1 "parso" (ARGH!) solo la pagina iniziale, se > vale 2 parso anche tutti i link in essa e così via... > > ecco il codice: > > def run ( self ): > # lista temporanea > temp = [] > # all'inizio la lista results contine l'url iniziale > results = [self.start_url] > #cast della profondita' in intero poiché la leggo da input > p = int(self.profondita) > # finche' la profondita' e' maggiore di zero, intero sulla lista > temp eseguendo il > # parsing degli url trovati in essa > while(p > 0): > print "Thread lanciato con profondita: ", p > # copio i risultati attuali dentro la lista temp > # all'inizio conterrà solo un url > temp = results > print "ecco la lista TEMP:" > print temp > [results.extend(self.parseUrl(video)) for video in temp] > print "finito ciclo while \n\n\n" # qua non ci arrivo mai :-( > p-=1 > > il problema è che in ogni caso non esce mai dalla list comphrension, > eppure la lista temp contiene un solo url! > In pratica continua a ciclare come se ogni volta eseguisse temp = > results, ma non capisco il perché... > > qualche idea? >
temp e results fanno riferimento allo stesso oggetto, e quindi quello che stai in realtà facendo è qualcosa tipo: l = [1] [l.append(i) for i in l] Nella list comphrension la lista è valutata in modo lazy, quindi hai un ciclo infinito. Manlio Perillo _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python