Overblog All blogs Top blogs Jobs, Education & Studies
Edit post Follow this blog Administration + Create my blog
MENU
L'Américanisation

Master 1 Plurital 2012

Advertising

Aspiration des URLs...

Second script :

Le second script consiste à créer un tableau de liens avec des liens externes vers les pages visées et de liens internes vers les pages correspondantes aspirées. Il s’agit ainsi de modifier le script 1 en ajoutant la commande « wget » ou la commande « curl » qui permettent de récupérer des URLs et de les stocker localement (enregistrer sous).

 

L’objectif est de lire un fichier contenant une liste d’URLs et de produire un fichier HTML contenant un tableau a trois colonnes (numéro de l’URL, URLs et pages aspirées) tout en établissant des liens vers deux ressources (URL et page aspirée)

 

Il est à noter que l’option « -O » de la commande « wget » permet de spécifier le chemin vers lequel le fichier va être enregistré.

 

Voici la modification du script après l’ajout de la commande « wget » :

Advertising
Aspiration des URLs...
Aspiration des URLs...
Aspiration des URLs...

Pour pouvoir stocker les pages aspirées de plusieurs fichiers URL dans le répertoire PAGES-ASPIREES il faut un moyen de les nommer pour ne pas écraser les fichiers existants pour chaque tour de la boucle ( pour chaque fichier URL).

Il y a plusieurs façons d’organiser les pages :

• créer un compteur qui est initialisé en dehors de la boucle (la boucle qui lit le contenu du dossier qui contient les fichiers URL) et qui continue à s’incrémenter pendant tout le programme. Le résultat est que tous les pages aspirées se trouvent dans le dossier PAGES-ASPIREES, numérotées de 1 à n (où n est le nombre de pages aspirées en totale)

• créer des sous-dossiers qui prennent les titres des fichiers URL (sans l’extension), qui contiennent les pages aspirées de ce fichier-là, numérotées de 1 à n (où n est le nombre des pages aspirées pour chaque fichier)

Le script pour la deuxième façon se trouve ci-dessous. Une condition a été ajoutée qui crée les sous-dossiers en utilisant le nom des fichiers seulement si les dossiers de ces noms-là n’existent pas déjà.

Le nom des fichiers ($filename) peut également être utilisé pour le titre de chaque tableau. Pour éviter des titres de type Anglais_Britannique, il est possible de créer une deuxième variable ($filenametitle) qui est une cope de $filename mais qui remplace les _ par des espaces - pas très nécessaire mais plus joli !

Le script

Le script

Advertising
Le programme commence...et crée des sous-dossiers contenant les pages aspirées
Le programme commence...et crée des sous-dossiers contenant les pages aspirées

Le programme commence...et crée des sous-dossiers contenant les pages aspirées

...Et le résultat (avec l'aide d'un petit fichier style.css)

...Et le résultat (avec l'aide d'un petit fichier style.css)

Nous avons quand-même rencontré quelques problèmes concernant l'aspiration des pages avec wget, parmi lesquels :

 

  • Erreur 301 - moved permanently

  • Erreur 302 - moved temporarily

  • Erreur 400 - bad request

  • Erreur 404 - Not found

  • Erreur 500 - internal server error

  • Erreur 503 - service unavailable

  • En attente...

 

Pour le dernier, il est possible de spécifier le nombre de tentatives de connexion pour ne pas attendre toute la journée (au maximum le nombre de tentatives par défaut) en ajoutant une option à wget :

wget -t 2 
qui signifie que le maximum nombre d'essais est deux.

Pour les autres, hélas ! Nous avons un bon petit tas d'erreurs.  Peut-être que "curl" serait mieux adapté pour la tâche ?

Advertising
On attend...

On attend...

Donc, nous avons essayé avec la commande curl au lieu de wget. Nous avons eu de meilleurs résultats (avec plus de pages aspirées). Il fallait juste remplacer la commande wget par :

curl -o ./$pagesaspirees/$filename/$i.html $link

Share this post
Repost0
To be informed of the latest articles, subscribe:
Comment on this post
S
Effectivement, il faut essayer via curl aussi<br /> et vérifier que les URLS restent toujours accessibles.
Reply