Bonjour à tous,
Voici ci-dessous une classe que j'ai créé permettant de vérifier, ouvrir et afficher tout les liens morts dans une page web
Vous aurez besoin des modules suivants:
Si je voulais vérifier tout les liens morts d'une page web
Bien-sûr ce code est perfectible, améliorable surtout dans le sens ajouts de fonctionnalités, mais ça permet déjà pas mal de choses basiques.
Voici ci-dessous une classe que j'ai créé permettant de vérifier, ouvrir et afficher tout les liens morts dans une page web
Vous aurez besoin des modules suivants:
Code:
import webbrowser as wb from lepl.apps.rfc3696 import HttpUrl # pour valider une url import lxml.html import requests class Url: def __init__(self, myUrl): self.url = myUrl self.redirect = None self.valid = self.is_opened() def is_validate(self): """Est-ce que l'URL est convenablement écrit ?""" validator = HttpUrl() if not validator(self.url): return False return True def is_opened(self): """Est-ce que l'URL est atteignable ?""" if self.is_validate(): r = requests.get(self.url) code = r.status_code if code == 200: self.redirect = r.url elif code == 302 or code == 301: self.redirect = r.headers['Location'] return True return False def open(self, browser=None): """Ouvrir la page dans un navigateur web""" if not self.valid: return if browser: try: browser = wb.get(browser) except wb.Error: browser = None if browser: browser.open(self.url) wb.open(self.url) def getAllLinks(self): """Trouver tous les liens d'une page""" if not self.valid: return r = requests.get(self.url) page = r.content dom = lxml.html.fromstring(page) for link in dom.xpath('//a/@href'): yield link
Code:
myURL = Url("http://www.google.fr") for url in myURL.getAllLinks(): # recherche tous les liens de la page web url = Url(url) if url.url.startswith('/'): # Gestion des liens relatifs à la page web url = Url(myURL.url+url.url) if not url.valid: print(url.url) elif not url.valid: # Gestion des liens absolus à la page web print(url.url)
Commentaire