Téléchargement des sites et ajout d'une troisième colonne à notre tableau

Publié le par La vie multilingue du verbe

"First up is Kirkland. They keep everything open and allow indexes in their Apache configuration so a little wget magic is all that’s necessary to download the entire Kirkland facebook. Kids’ stuff."

The Social Network, Columbia Pictures, 2010 

Pour l'étape suivante du projet encadré, la consigne était d'aspirer les sites Internet correspondant à nos URL, et d'ajouter une colonne à nos tableaux d'URL, remplie avec des liens pointant vers les pages HTML de façon locale (telles qu'elles ont été enregistrées dans notre disque dur).

Pour procéder au téléchargement - automatique - des sites web, deux outils sont à notre disposition : wget et curl. (Pour plus d'informations sur wget, je vous renvoie à Wikipédia http://fr.wikipedia.org/wiki/GNU_Wget  et au Site du Zéro : http://www.siteduzero.com/tutoriel-3-80568-transferer-des-fichiers.html )

Voici le script que j'ai utilisé pour wget :

scriptwget

L'image suivante montre les dernières lignes de l'exécution du script :

finduscript

Voici les dossiers créés dans PAGES-ASPIREES :

dossiers

Et les pages crées, en prenant, par exemple, le dossier 3 :

pagesaspirees.png

Voici le fichier html obtenu, tel qu'il s'affiche sous Firefox :

firefox1  firefox2 firefox3

(cliquez sur les images pour agrandir)

Nous allons à présent utiliser curl au lieu de wget, ce qui nous permettra d'ajouter une colonne indiquant l'état de curl lors du téléchargement des pages web. Si l'état est égal à 0, alors tout s'est bien passé, sinon il y a eu une erreur.

La liste des codes erreur de curl et leur description sont disponibles à cette adresse : http://curl.haxx.se/libcurl/c/libcurl-errors.html

Le Terminal m'a dit qu'il ne pouvait pas exécuter la commande curl, car curl n'était pas installé. J'ai donc exécuté la commande sudo apt-get install curl pour résoudre ce problème.

Ensuite, le téléchargement de la 21ème URL de notre fichier d'URLs en anglais posait problème : curl tentait de télécharger la page pendant une durée indéfinie, mais ne semblait pas y parvenir. Nous avons donc remplacé l'URL par une URL équivalente (http://www.foxnews.com/story/0,2933,200601,00.html) avant de relancer le script, dont voici le code :

Sans-titre-1-copie-3.jpg

Voici le résultat obtenu sous Firefox :

firecurl1.png firecurl2.png firecurl3.png firecurl4.png

Observations : La septième URL du premier fichier (URLs en anglais) affiche le code erreur 52. Selon le tableau des codes d'erreur susmentionné, curl n'a obtenu aucune réponse du serveur (CURLE_GOT_NOTHING (52) Nothing was returned from the server, and under the circumstances, getting nothing is considered an error.)

Enfin, pour quatre des URLs en français, curl a retourné le code d'erreur numéro 6 (CURLE_COULDNT_RESOLVE_HOST (6)Couldn't resolve host. The given remote host was not resolved.)

Il faudra probablement remplacer ces URLs.

 

Commenter cet article

SF 10/11/2011 18:12


Travail toujours aussi précis.
Parfait
SF