M@XCode

Personal blog dedicated to computer science

Comment créer un script shell permettant de récupérer et d'analyser des articles wikipedia avec lynx

Qu’est ce qu’un script shell

Un script “shell” est un programme écrit pour être exécuté via l’interpréteur de commande UNIX. Ces scripts sont facile à générer et suivent les patterns des langages de programmation communs. Ainsi on a la possibilité de créer des boucles et des structures conditionnelles par exemple.

Un script shell est dans les fait un fichier avec l’extension sh. On l’exécute en ouvrant cmd sous windows, ou le terminal sur macOS. La commande permettant d’executer un script shell est la suivante:

1
$ sh name_of_the_script.sh

NB : Par habitude on rajoute un sigle dollar devant la commande. Il s’agit juste d’une convention permettant d’indiquer au lecteur que cette commande doit être exécutée dans le terminal.

Itérer sur les lignes d’un fichier via shell

Afin de lire les lignes d’un fichier les unes des autres on peut utiliser la structure for. For indique à l’algorithme qu’il faut itérer pour chaque élément d’un input (ici l’ensemble des lignes de notre fichier) :

1
2
3
4
5
location_of_the_url_file = "./urls.txt"
for url in `cat $location_of_the_url_file `
{
echo $url
}

Dans un premier lieu on déclare la variable location_of_the_url_file qui stocke l’emplacement de notre fichier relativement à notre dossier de travail.

Dans un second temps on va récupérer l’ensemble des lignes de notre fichier via la commande :

1
`cat $location_of_the_url_file`

Récupérer le contenu d’une page web via wget

wget est un outil de téléchargement très puissant. On peut donc l’utiliser pour télécharger le contenu d’une page web directement depuis le terminal. Il faut d’abord bien s’assurer de l’avoir installer sur sa machine.

Si ce n’est pas le cas on peut utiliser la commande brew install wget. Homebrew est un gestionnaire de dépendance très pratique qui permet des installations rapides. Pour plus d’information voici la page : http://brew.sh/index_fr.html

1
wget -O ./pages/wiki.html $url

La commande suivante permet de télécharger la page dont l’url est $url et de stocker cette dernière dans le dossier pages sous le nom wiki.html. Le téléchargement dans un répertoire cible est géré par la commande -O.

Créer un dump en format plain text de notre page html grâce à lynx

Lynx est un outil permettant la manipulation de pages HTML. Il s’agit en fait d’un navigateur en mode ligne de commande. Une sorte de chrome version simplifiée.

Pour accéder à google depuis votre terminal :

1
lynx http://www.google.fr

Google en version Lynx

On peut donc produire une version .txt de notre page

1
lynx -dump $url >./plain_text/page_version_txt.txt

Cette version txt de nos pages web nous permettra de nous livrer à des analyses de type “NLP” (Natural Language Processing). Nous traiterons plus en détail cet aspect dans un prochain billet.

Voici le code complet du programme : https://github.com/maximilienandile/shell_web_page_to_plain_text