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"
<[EMAIL PROTECTED]> 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@lists.python.it
http://lists.python.it/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python