Je dois créer une fonction en python qui recherche des liens dans une page HTML et ensuite pour chaque lien, vérifiez si le lien est cassé ou non.un vérificateur de liens en python
Tout d'abord j'ai créé une fonction qui recherche chaque lien (cassé ou non), pas de problème et les stocke dans un tableau appelé "g".
Deuxièmement, j'ai pensé à créer un tableau "a" qui ne contient que les liens rompus en vérifiant chaque élément/élément dans le tableau "g".
Je ne sais pas pourquoi, le lien de vérification par lien ne fonctionne pas dans la fonction. Mais si je copie un lien et le colle comme un paramètre dans la fonction sur le shell, cela fonctionne.
import urllib.request
import re
import urllib.error
def check(url):
try:
f= urllib.request.urlopen(url)
except urllib.error.HTTPError :
return False
return True
def trouveurdurls(url):
f= urllib.request.urlopen(url)
b=(f.read().decode('utf-8'))
d=re.findall('<a href=".*</a>',b)
liste=[]
f.close()
for el in d:
g=re.findall('"https?://.*\.*"',el)
liste.append(g)
a=[]
for el in liste:
chaine= ''.join(map(str,el))
url=chaine.replace('\'','')
print(url)
#check(url)
b=trouveurdurls("http://127.0.0.1/")
Comment ça ne marche pas exactement? Est-ce que votre URL est correcte quand elle est imprimée ...? Notez que 're.findall' renvoie une liste (et probablement plus que vous ne le pensez), vous ajoutez ensuite' list' à 'liste' ... Mettez des instructions d'impression à chaque étape et identifiez le plus tôt Les choses commencent à avoir l'air "fausses" ... –
De plus, ajouter des commentaires à votre code peut aider les gens à comprendre le fonctionnement de votre code. – admcfajn