Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 794 fois - Téléchargée 16 fois
#!/usr/bin/python #-*- coding: utf-8 -*- import urllib import string import re from time import strftime import os try: import gtk except: print "Ce programme ne peut fonctionner sans PyGTK, veuillez le télécharger et l'installer" def Recuperation(arg): ### Fonction qui va récupérer les informations ### urlRecue = urlEntry.get_text() if urlRecue != "": urlCorrect = urlRecue[0:7] if urlCorrect == "http://": ### Ajout du "http://" si besoin urlRecue2 = urlRecue else: urlRecue2 = "http://"+urlRecue Url = urllib.urlopen(urlRecue2) if Url != 0: strPage = Url.read() titrePage = re.findall('<title>+[^\"]+</title>', strPage) # Regex contenant le titre de page titrePage = (titrePage[0]) titrePage = titrePage[7:len(titrePage)-8] # Commencer à partir de 7 (= <title>) et allez jusqu'à taille "titre" -8 (8 = </title>) nbrImage = strPage.count('<img ') #Nombre d'image dans la page nbrJsInterne = strPage.count('<script') #Js INTERNE a la page if nbrJsInterne > 0: contientJsInterne = "Oui" else: contientJsInterne = "Non" nbrLiens = strPage.count('<a ') # Nombre de liens dans la page typePage = strPage.count('//W3C//DTD XHTML 1.0') typePage2 = strPage.count('HTML 4.01 Transitional') listeLiens = re.findall('<a href=(.*?)>.*?</a>', strPage) # Regex contenant la cible des liens de la page for Lien in listeLiens: Liens = Lien # Contient les liens de la page ### Fonctionnalitée pas encore implantée ;-) ### if typePage > 0: typePage = "XHTML" elif typePage2 > 0: typePage = "HTML" else: typePage = "Doctype non valide" Informations = "Type de document : "+str(typePage)+"\nNom de page : "+titrePage+"\nNombre d'images : "+str(nbrImage)+"\nContient du Js interne à la page : "+contientJsInterne+"\nNombres de liens : "+str(nbrLiens) txtBuffer = txtViewInfos.get_buffer() txtBuffer.set_text(Informations) activerLog = rdioEnregistrerLog.get_active() if activerLog == True: try: ### Si le log existe, on le supprime pour en écrire un nouveau os.remove('log.txt') # Supprimer le log precedant except: ### Si le log n'existe pas -> gérer erreur pass fichierLog = open('log.txt','a') fichierLog.write('Enregistré le '+strftime("%d/%m/%Y")+' à '+strftime('%H:%M:%S')) fichierLog.write('\n'+Informations) fichierLog.close() else: ### Afficher boite de dialogue "error" dialogError = gtk.MessageDialog(pWindow, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR , gtk.BUTTONS_OK, "Merçi de taper une adresse valide") dialogError.run() dialogError.destroy() ### Création de l'interface graphique ### pWindow = gtk.Window(gtk.WINDOW_TOPLEVEL) pWindow.set_title("WwWExtract") pWindow.set_default_size(247, 227) pWindow.set_position(gtk.WIN_POS_CENTER) pWindow.connect("destroy", gtk.main_quit) ## --------------------------------------------------- ## pTable = gtk.Table(6, 2, True) ### Table principale contenant tout les widgets ### pWindow.add(pTable) labelAdresse = gtk.Label("Veuillez taper l'adresse de la page : ") urlEntry = gtk.Entry() btnRecuperer = gtk.Button("Récupérer les infos") rdioEnregistrerLog = gtk.CheckButton(label="Enregistrer log (appelé log.txt)") txtViewInfos = gtk.TextView() ## --------------------------------------------------- ## pTable.attach_defaults(labelAdresse, 0, 3, 0, 1) pTable.attach(urlEntry, 0, 3, 0, 3, gtk.EXPAND | gtk.FILL, gtk.EXPAND, 17, 0) pTable.attach(rdioEnregistrerLog, 0, 3, 0, 7, gtk.EXPAND, gtk.EXPAND, 0, 0) pTable.attach(btnRecuperer, 1, 2, 0, 5, gtk.EXPAND, gtk.EXPAND, 0, 0) pTable.attach(txtViewInfos, 0, 3, 4, 7, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 8, 8) btnRecuperer.connect("clicked", Recuperation) pWindow.show_all() gtk.main()
"
Traceback (most recent call last):
File "C:/Python23/test.py", line 63, in -toplevel-
pWindow = gtk.Window("gtk.WINDOW_TOPLEVEL")
NameError: name 'gtk' is not defined
"
pTable.attach_defaults(labelAdresse, 0, 3, 0, 1)
En effet, j'ai justement corrigé ça peut après ton commentaire, méa culpa.
Par contre, que pourrais-je faire pour améliorer la lisibilité du code, à la fin ?
C'est une tres mauvaise habitude d'utiliser != (L.15) dans ce cas, tu deverais commencer par ecrire l'exeption et non le code lui-meme, c'est plus facile pour lire, ecrire et debuger le code.
Sinon l'idee est bonne meme si deja postee, je donne un 7/10.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.