#1 Le 28/01/2008, à 20:45
- Mathieu11
Copier partie de page web dans un fichier texte
Bonjour,
Je souhaiterais copier quelques lignes publiees regulierement sur un site web dans un fichier texte avec un script bash.
Les lignes en question changent regulierement mais sont toujours contenues entre deux parties de textes qui ne changent pas (des mots les encadrant restent constants eux)
Quelqu'un peut-il m'orienter ?
Merci
Vostro 1400
Hors ligne
#2 Le 28/01/2008, à 21:16
- DarkHylian
Re : Copier partie de page web dans un fichier texte
je crois qu'il y a une possibilité avec une boucle bash.
while read line ;
do {
if [ $line = ] ;
then echo -e "${line}\r" >> <fichierpourécrire> ;
fi } ;
done < fichierà lire
Si tu arrives à décoder, ça fait un moment que j'ai pas utiliser cette boucle, mais le principe est simple, on parcourt le texte ligne par ligne. Il reste plus qu'à trouver quelle condition mettre pour que le texte à recopier soit écrit dans le fichier de sortie.
fichier à lire doit bien accepter une url quelconque, pense juste à faire reconnaitre ceci comme un paramètre de ta fonction, et idem pour le fichier de sorti, sauf si il est constant; (les lignes seront inséré après, surtout si tu fait un echo -e "\r")
Hors ligne
#3 Le 28/01/2008, à 21:40
- Mathieu11
Re : Copier partie de page web dans un fichier texte
Je m'en sors pas trop...
En fait je voudrais recuperer trois lignes sur un site.
Ces trois lignes sont precedees par les mots suivants :
La premiere -> METAR
La deuxieme -> TAF
La troisieme -> TAF
Desole je comprends pas trop comment faire....
Dernière modification par Mathieu11 (Le 28/01/2008, à 21:41)
Vostro 1400
Hors ligne
#4 Le 28/01/2008, à 21:58
- gilbert
Re : Copier partie de page web dans un fichier texte
Salut,
c'est toujours pour ta bédé ?
On doit pouvoir faire plus l33t que ce que je vais te montrer, mais c'est un début de piste. Je propose de reprendre le code de DarkHylian comme suit :
#!/bin/bash
# supposons les identifiants qui encadrent sont "motDebut" juste avant le texte et "motFin" juste après
# supposons aussi que le fichier se nomme fichier.html
wget http://UrlDeLaPage/Oà¹SeTrouve/Ton/fichier.html
if ! grep motDebut < fichier.html &> /dev/null || ! grep motFin < fichier.html &> /dev/null ; then
echo "le fichier ne contient pas de texte souhaité"
exit 1
fi
touch fichierDeSortie
ecriture=off
while read ligne ; do
if echo $ligne | grep motDebut &> /dev/null ; then
ligne=${ligne##*motDebut}
ecriture=on
fi
if echo $ligne | grep motFin &> /dev/null ; then
ecriture=off
ligne=${ligne%motFin*}
echo "${ligne}" >> fichierDeSortie
echo "===========Séparation============" >> fichierDeSortie
fi
[ $ecriture == "on" ] && echo "${ligne}" >> fichierDeSortie
done < fichier.html
note bien que ce sont deux if disctincts dans la boucle et pas un elif au second.
EDIT1 : je n'ai pas vu ta réponse entre deux. Tu peux adapter motDebut par tes identifiants.
EDIT2 : à la place de nommer directement le fichier comme je l'ai fait, il te faudra surement récupérer son nom comme dans ton topic "Compter le nombre de fichiers dans un dossier et numerotation"
Dernière modification par gilbert (Le 28/01/2008, à 22:02)
Simplement moi-même..
Hors ligne