From abeef74bde9f0e9dc4104037d261721d103e4d86 Mon Sep 17 00:00:00 2001 From: Leonardo Robol Date: Mon, 26 Oct 2009 18:38:17 +0100 Subject: [PATCH] Modificata qualche espressione regolare e introdotta una forma canonica per gli URL --- spidy.py | 44 +++++++++++++++++++++++++++++++++++++++++--- test/test_1.py | 2 +- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/spidy.py b/spidy.py index 62d04c4..2b8feab 100644 --- a/spidy.py +++ b/spidy.py @@ -1,18 +1,56 @@ +# +# -*- coding: utf-8 -*- +# + import random import urllib2 import mutex import threading import re -default_page = "http://poisson.phc.unipi.it/" +default_page = "http://poisson.phc.unipi.it" def get_links(url): content = get_page(url) if(content == -1): return -1 - links = re.findall(r"",content) - return links + links = re.findall(r"]*>",content) + ret = [] + for link in links: + # Espando il link in modo da (speriamo!) + # garantire l'unicità + ret.append(expand_url(url, link)) + + return ret + + +def expand_url(parent, url): + """Questa funzione prende l'url della pagina parent + e l'url del link e dà all'url del link una forma unica + e canonica, del tipo + + http://www.example.com/pagina + http://www.example.com/pagina.html + """ + + ## Controllo che l'url non cominci con un punto + ## nel qual caso cerchiamo di rimediare subito + if url[0] == ".": + if len(url) == 1: + url = parent + + else: + if(url[1] != "."): + url = url[1:] + + + ## Controlliamo prima di tutto se nell'url c'è un + ## protocollo + protocol = re.search(r"(\w+):", url) + if protocol == None: + url = parent + url + return url def get_page(url): try: diff --git a/test/test_1.py b/test/test_1.py index ca80316..238f68a 100644 --- a/test/test_1.py +++ b/test/test_1.py @@ -3,5 +3,5 @@ sys.path.append("../") import spidy print " => Provo ad ottenere i link di www.robol.it" -print spidy.get_links("http://www.robol.it") +print spidy.get_links("http://poisson.phc.unipi.it/~robol") -- 2.1.4