Bonjour ,
J'ai réaliser un prog pour extarire les liens d'une page web en python mais je ne sais pas trop si je dois faire une interface graphique... J'aimerai bien que qq'un puisse m'éclairer et m'expliquer comment faire
voici mon prog si cela peut vous aider a voir + clair
import urllib
def geturl(url):#cette methode retourne le contenu du fichier et #son type grace a l'URL
f = urllib.urlopen() "retoure un fichier en tant qu'objet pouvant #être récupéré et lu de l'URL donné
data = f.read()
headers = f.info() #retourne un dico contenant les URL #retournées
f.close()
if headers.has_key(".html"):
mimetype = headers[".html"]
return 1
else:
#si le protocale utilisé n'est pas HTTP retourne un dico #vide et devine l' extension du fichier
if url[-5:] == ".html":
mimetype = "text/html"
else:
mimetype = ? #j'ai un prob a ce niveau
return (data, mimetype)
from sgmllib import SGMLParser
import string
class LinkExtractor(SGMLParser):
def __init__(self):#constructeur, initialise les liens(variables #d'instance) dans une liste vide
self.links = []
SGMLParser.__init__ (self)
def do_a(self, attributs):#methode invoqué par SGMLParser qd #un <A> est rencontré
for (nom, valeur) in attributs:
if nom == "href":
valeur = cleanlink(valeur)
if valeur:
self.links.append(valeur)
def getlinks(self):#peut etre appellé par l'utilisateur pour #récupérer la liste des liens collecté
return self.links
def cleanlink(link):#enlève tout ce qui ne peut pas faire partie de #la syntaxe des URL
i = string.find(link, '#')
if i >= 0:
link = link[:i]
words = string.split(link) # Split les espaces
string.join(words, "") # Joint les mot sans les espaces
print cleanlink(link)
def getlinks(url):
(data, mimetype) = geturl(url)
if mimetype == "text/html":
parser = LinkExtractor()
parser.feed(data)
parser.close()
links = parser.getlinks()
else:
links = [] # les pages qui ne sont pas HTML n'ont pas de liens
return links
print getlinks(url)
import urlparse
def getfulllinks(url):#utiliser pour rassembler les liens retourner #par getlinks
links = getlinks(url)
fulllinks = []
for link in links:
full = urlparse.urljoin(url, link)
fulllinks.append(full)
return fulllinks
print getfulllinks(url)
SOURTOUT si vous avez dzs suggestions à faire ou si vous voyer des erraurs je prendrai vos remarques en comptes avec plaisir
MERCI
Merci d'avance pour votre aide