Forum
>>
Principianti
>>
Spider dal libro Marco Beri
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Skrypnyk81 |
2016-12-28 20:58:29 - Spider dal libro Marco Beri
|
Salve.
Leggendo il libro di @Marco Beri "Python" sono arrivato ai esempi degli semplici spider web che usano modulo threading e multiprocessing Allora, nel primo esempio script funziona (penso), però non mi salva i siti trovati Ecco il codice: import threading, urllib.request, time urls = ["www.ubuntu.com", "www.linux.org", "www.python.org"] class esplora(threading.Thread): def __init__(self, url): threading.Thread.__init__(self) self.url = url self.status = -1 def run(self): print("Sto leggendo {0}".format(self.url)) urllib.request.urlretrieve("http://{0}".format(self.url)) print("Ho letto e salvato {0} alle ore {1}".format(self.url, time.strftime("%H:%M:%S"))) for url in urls: esplora_url = esplora(url) esplora_url.start()Eseguendo il primo script dalla riga di comando, mi trova i siti citati però non li salva come nel libro(Allego immagine spider). Con secondo esempio spider_multi.py mi trovo già errori nell'esecuzione. Ecco il codice: from multiprocessing import Pool import urllib.request, time, os def esplora(url): print("Sto leggendo {0} (proc:{1})".format((url, os.getpid()))) urllib.request.urlretrieve("http://{0}".format(url), url) print("Ho letto e salvato {0} alle ore {1}".format(self.url, time.strftime("%H:%M:%S"))) if __name__ == '__main__': p = Pool(3) p.map(esplora, ["www.ubuntu.com", "www.linux.com", "www.python.org"])Con questo script mi solleva un sacco di errori: multiprocessing.pool.RemoteTraceback: """ Traceback (most recent call last): File "C:\Python3\lib\multiprocessing\pool.py", line 119, in worker result = (True, func(*args, **kwds)) File "C:\Python3\lib\multiprocessing\pool.py", line 44, in mapstar return list(map(*args)) File "C:\Users\Murchik\Prova\spider_multi.py", line 4, in esplora print("Sto leggendo {0} (proc:{1})".format((url, os.getpid()))) IndexError: tuple index out of range """ The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:/Users/Murchik/Prova/spider_multi.py", line 9, in <module> p.map(esplora, ["www.ubuntu.com", "www.linux.org", "www.python.org"]) File "C:\Python3\lib\multiprocessing\pool.py", line 260, in map return self._map_async(func, iterable, mapstar, chunksize).get() File "C:\Python3\lib\multiprocessing\pool.py", line 608, in get raise self._value IndexError: tuple index out of rangePure per questo esempio allego immagine di esecuzione nel cmd.exe Forse sbaglio con gli spazi o posizioni delle righe(leggo il libro digitale) che capita spesso a me Grazie in anticipo e buone feste . |
|
Scritto da ㎝ |
2016-12-29 11:18:39 - Re: Spider dal libro Marco Beri
|
In effetti quel codice non contiene nessuna istruzione per salvare i dati. Suppongo per brevità d'esempio, o per pigrizia dell'autore
No, quel codice contiene due errori (questa volta per pigrizia del revisore ): la riga print("Sto leggendo {0} (proc:{1})".format((url, os.getpid())))dovrebbe essere print("Sto leggendo {0} (proc:{1})".format(url, os.getpid())), mentre la riga print("Ho letto e salvato {0} alle ore {1}".format(self.url, time.strftime("%H:%M:%S")))va riscritta così: print("Ho letto e salvato {0} alle ore {1}".format(url, time.strftime("%H:%M:%S")))
Anche a te! cm --- Ultima modifica di ㎝ in data 2016-12-29 11:19:31 --- THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
|
Scritto da Skrypnyk81 |
2018-05-17 21:52:55 - Re: Spider dal libro Marco Beri
|
Ciao.
Dopo la tua correzione lo script funziona. Ho ancora un problema dal libro, volevo chiedere, perché sono un nuovo nel forum. Posso postare qui il problema seguente ho devo aprire una nuova discussione? Grazie ancora, anche se un pò in ritardo |
|
Scritto da ㎝ |
2018-05-18 10:09:47 - Re: Spider dal libro Marco Beri
|
Ottimo.
Va benissimo anche qui
㎝ THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝ |
Pagina: 1
Esegui il login per scrivere una risposta.