[Python] Applicazione multithreading

A.recca a.recca a siciliawebplus.it
Lun 19 Mar 2007 05:13:16 CET


Scusate,
andiamo per ordine, ho visto l'esempio che mi hai postato e non è quello 
che mi serve.
Vi posto queste righe di codice che ho fatto:

url = sys.argv[1]

urlparts = urlparse.urlsplit(url)
rootUrl = urlparts[0] + "://" + urlparts[1]
protocol = urlparts[0]
server = urlparts[1]
path = urlparts[2]
query = urlparts[3]
fragment = urlparts[4]

contents = urllib2.urlopen(rootUrl).read()

lista = []

for u in htmldata.urlextract(contents, url):
   if u.tag_name == 'a':
    urlparts2 = urlparse.urlsplit(u.url)
    rootUrl2 = urlparts2[0] + "://" + urlparts2[1]
    if url.find(rootUrl2) == 0:
        lista.append(u.url)
        print u.url

print "lista totale: ",
print len(lista)

Risultato:

python spider.py http://www.google.it
http://www.google.it/url?sa=p&pref=ig&pval=3&q=http://www.google.it/ig%3Fhl%3Dit&usg=__G4FoAkG2BgZXFScY56sHYkwh_us=
http://www.google.it/intl/it/options/
http://www.google.it/advanced_search?hl=it
http://www.google.it/preferences?hl=it
http://www.google.it/language_tools?hl=it
http://www.google.it/intl/it/ads/
http://www.google.it/services/
http://www.google.it/intl/it/about.html
lista totale:  8

ora come faccio a dirgli che per ogni link trovato in lista[] deve 
entrare di nuovo ed eseguire lo stesso processo???

Grazie per l'aiuto

Valentino Volonghi aka Dialtone ha scritto:
> On Sun, 18 Mar 2007 22:59:28 +0100, "A.recca" 
> <a.recca a siciliawebplus.it> wrote:
>
>> Ad esempio ho scaricato dalla rete questo script....
>
> Mi sembra orribile quello script...
>
> import pprint
>
> from twisted.internet import reactor
> from twisted.internet import defer
> from twisted.web import client
>
> import BeautifulSoup as bsoup
>
> def hrefs(page):
>    return list(anchor.get('href') for anchor in 
> bsoup.BeautifulSoup(page).findAll('a'))
>
> def crawler(urls):
>    deferreds = []
>    for url in urls:
>        d = client.getPage(url)
>        d.addCallback(lambda page: (url, hrefs(page)))
>        deferreds.append(d)
>    return defer.DeferredList(deferreds)
>
> urls = [
>    "http://www.twisted.it/",
>    "http://www.twistedmatrix.com/",
>    "http://www.yahoo.com",
>    "http://www.digg.com",
>    "http://www.divmod.org/",
>    "http://www.virgilio.it",
>    "http://www.vodafone.it",
>    "http://www.google.com",
> ]
>
> crawler(urls).addCallback(pprint.pprint).addBoth(lambda _: 
> reactor.stop())
>
> reactor.run()
>
> Come ti ho detto si usa la programmazione asincrona, se non sai cosa 
> sia l'ideale non e` ripetere la domanda uguale a prima aggiungendo 
> piu` linee ma cercare cosa sia la programmazione asincrona.
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>   



Maggiori informazioni sulla lista Python