Modificata qualche espressione regolare e introdotta
Leonardo Robol [2009-10-26 17:38]
Modificata qualche espressione regolare e introdotta
una forma canonica per gli URL
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"<a href=\"(\S*)\">",content)
- return links
+ links = re.findall(r"<a href=\"(\S*)\"[^>]*>",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")