[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