Un programme Python qui rampe Slithers? Un site Web pour les liens et imprime un rapport YAML de liens cassés.
Python 3,6 ou plus.
Il n'y a pas de dépendances externes, NEO.
$ python hydra.py -h
usage: hydra.py [-h] [--config CONFIG] URLArguments de position:
URL : L'URL du site Web à ramper. Assurez-vous que URL est absolue, y compris le schéma, par exemple https://example.com .Arguments facultatifs:
-h , --help : montrez un message d'aide et de la sortie--config CONFIG , -c CONFIG : Chemin vers un fichier de configurationUn rapport Broken Links sera sorti vers STDOUT, vous pouvez donc le rediriger vers un fichier.
Le rapport sera formaté YAML. Pour enregistrer la sortie dans un fichier, exécutez:
python hydra.py [URL] > [PATH/TO/FILE.yaml]Vous pouvez ajouter la date actuelle au nom de fichier à l'aide d'une substitution de commande, telle que:
python hydra.py [URL] > /path/to/ $( date ' +%Y_%m_%d ' ) _report.yaml Pour voir combien de temps Hydra prend pour vérifier votre site, ajoutez time :
time python hydra.py [URL]Vous pouvez facilement incorporer HYDRA dans le cadre d'un processus automatisé à l'aide de l'action Link-Snich.
HYDRA peut accepter un fichier de configuration JSON en option pour des paramètres spécifiques, par exemple:
{
"OK" : [
200 ,
999 ,
403
],
"attrs" : [
" href "
],
"exclude_scheme_prefixes" : [
" tel "
],
"tags" : [
" a " ,
" img "
],
"threads" : 25 ,
"timeout" : 30 ,
"graceful_exit" : " True "
}Pour utiliser un fichier de configuration, fournissez le nom de fichier:
python hydra.py https://example.com --config ./hydra-config.jsonParamètres possibles:
OK - Codes de réponse HTTP à considérer comme une vérification de liaison réussie. Par défaut est [200, 999] .attrs - Attributs des balises HTML pour vérifier les liens. Par défaut est ["href", "src"] .exclude_scheme_prefixes - préfixes du schéma http à exclure de la vérification. Par défaut est ["tel:", "javascript:"] .tags - Tags HTML pour vérifier les liens. Par défaut est ["a", "link", "img", "script"] .threads - Maximum Workers à exécuter. Par défaut à 50 .timeout - secondes maximales pour attendre la réponse HTTP. Par défaut à 60 .graceful_exit - Si défini sur True , et il y a des liens cassés présentent exit code 0 else return exit code 1 . Courir:
python -m unittest tests/test.py