Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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... sad

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é ? tongue

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