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 04/01/2012, à 20:02

pem1664

[résolu] trouver et extraire une expression dans un fichier html

Salut à tous,
Pour commencer je cherche à faire un script qui me permettrais de trouver une expression dans un fichier html.
Je ne sais pas si je suis clair, si besoin n'hésitez pas (faut dire que je suis pas très loquace la... hmm ).
Je pense que c'est possible... mais ne sais pas du tout par ou commencer alors toutes les idées sont les bienvenues!
Merci d'avance!

Dernière modification par pem1664 (Le 06/01/2012, à 11:17)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#2 Le 04/01/2012, à 20:24

pingouinux

Re : [résolu] trouver et extraire une expression dans un fichier html

Bonsoir,
À défaut de plus de précision :

man grep
grep mon_expression_cherchee fichier.html

Hors ligne

#3 Le 04/01/2012, à 22:25

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

Salut! merci pour ta réponse!

Bon... comment expliquer ca...  hmm je vais commencer par le début !
Je viens de scrapbooker le site http://lannuaire.service-public.fr/ je cherche à récuperer toutes les adresses mail de toutes les mairies de france pour faire un emailing.
Toutes les adresses sont disponible sur ce site et scrapbook me donne des fichiers mairie-XXXXX-YY.html.

Celui ci contient une ligne (la 459) contenant un <dd>Truc &nbsp;[ à ]&nbsp; machin.fr </dd>
l'idée c'est de faire un script qui
1 : cherche tous les mairie-XXXXX-YY.html (mais ca ca va)
puis
2 : ouvre récursivement chaque fichier et chercher dedans <dd>Truc &nbsp;[ à ]&nbsp; machin.fr </dd> puis le copier dans un fichier et passer à la ligne.

Après j'aimerais retravailler ce fichier pour virer &nbsp;[ à ]&nbsp; pour le remplacer par un @  et virer <dd> et </dd> toujours pour le mettre dans un fichier texte.

Voila tu sais tout!

Bon j'ai essayé le grep, ca marche pas (j'ai essayé des variantes aussi en ne cherchant que certains morceaux genre &nbsp;[ à ]&nbsp;)

Je conçois tout a fait qu'au point de vue éthique ca peux ne pas plaire a tous le monde... (emailing etc...) mais ça m’énerve profondément de voir le prix auquel ses listes sont vendu... donc
1: je souhaite faire ca, c'est du domaine public alors je vois pas pourquoi faut payer pour avoir
et
2: ca me convient parfaitement de la diffuser smile

edit eh!! je croyais l'avoir posté dans trucs et scripts??? quelqu'un l'a déplacé?
edit 2 y'a quand meme plus de 38000 fichiers (correspondant a chaque mairie alors, jpeux le faire a la main en ouvrant chaque fichier et en faisant un ctrl+f, aussi... big_smile)

Dernière modification par pem1664 (Le 04/01/2012, à 22:50)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#4 Le 04/01/2012, à 22:53

sputnick

Re : [résolu] trouver et extraire une expression dans un fichier html

gq chose du genre :

sed -rn '459{s:<dd>([^\&]+)\&nbsp;\[ à \]\&nbsp;(.*)</dd>:\1@\2:;p;} fichier

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 04/01/2012, à 22:54

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

Danke!! j'essai de suite!


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#6 Le 04/01/2012, à 22:56

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

Ahhhh! ca marche impec!!
UN GRAND MERCI smile (parceque malgré les explications que j'ai eu... je reste nul avec sed et awk, ou tout du moins incapable de faire un truc par moi meme...  hmm )

PS.. me reste plus qu'a faire le script et poster la liste si ca interresse quelqu'un wink

Dernière modification par pem1664 (Le 04/01/2012, à 22:57)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#7 Le 04/01/2012, à 22:59

nesthib

Re : [résolu] trouver et extraire une expression dans un fichier html

@pem : j'ai déplacé ta discussion car Trucs Astuces et Scripts utiles est fait pour proposer des trucs/astuces, pas pour demander de l'aide

sinon pour t'aider :

curl -s http://lannuaire.service-public.fr/mairies/aquitaine/gironde/mairie-33063-01.html | sed -n '/Téléphone/{n;s/.*\(+[ 0-9]\+\).*/\1/p}'

edit: o/ sputnick

edit2: je préfère ma solution tongue

Dernière modification par nesthib (Le 04/01/2012, à 23:01)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 04/01/2012, à 23:07

sputnick

Re : [résolu] trouver et extraire une expression dans un fichier html

o/ nesthib wink

je ne part pas de la solution idéale, mais du "cahier des charges" donné ici même wink

Dernière modification par sputnick (Le 04/01/2012, à 23:07)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#9 Le 04/01/2012, à 23:11

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

@ Nesthib, ok, bon, d'accord... mais une fois le script fait... ca pourra retourner a trucs, astuces et scripts utiles? ca pourrait etre un bon script non?
Par contre, super ta ligne j'ai le numéro de tel... j'ai essayé de changer par Courriel : mais ca marche pas... (normal tu va me dire mais j''aimerais comprendre pourquoi, ou quoi changer pour que ca marche avec l'adresse mail?) En attendant terrible ta ligne avec un petit test, possibilité de récuperer tous les tel de toutes les mairies de france !!
je note wink
si j'avais pas déja scrapbooké l'ensemble je serais surement passé par ta solution mais la j'ai déja les .html... la prochaine fois je posterais ma problématique avant big_smile

@ sputnick j'aime bien ta solution smile merci, ca répond tout a fait au cahier des charges!!


edit : ca a l'air compliqué sed... autant qu 'awk !! sad

Dernière modification par pem1664 (Le 04/01/2012, à 23:27)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#10 Le 04/01/2012, à 23:25

sputnick

Re : [résolu] trouver et extraire une expression dans un fichier html

curl -s "http://lannuaire.service-public.fr/mairies/rhone-alpes/ain/mairie-01016-01.html" | sed -rn '/ \[ à \] /{s:.*<dd>(.*) \[ à \] (.*)</dd>.*:\1@\2:;p;q;}'

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#11 Le 04/01/2012, à 23:33

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

Sputnick, elle fonctionne ta ligne chez toi? ches moi elle ne renvoit rien (mais y'a pas d'erreur,quand j'essai y'a des erreurs...)

pem@PeMTableT:~/Documents/mecatronic/scripts$ curl -s "http://lannuaire.service-public.fr/mairies/rhone-alpes/ain/mairie-01016-01.html" | sed -n '/ \[ à \] /{s:.*<dd>(.*) \[ à \] (.*)</dd>.*:\1@\2:;p;q;}'
sed: -e expression n°1, caractère 54: référence \2 invalide dans le côté droit de la commande `s'
pem@PeMTableT:~/Documents/mecatronic/scripts$ ^C
pem@PeMTableT:~/Documents/mecatronic/scripts$ curl -s "http://lannuaire.service-public.fr/mairies/rhone-alpes/ain/mairie-01016-01.html" | sed -rn '/ \[ à \] /{s:.*<dd>(.*) \[ à \] (.*)</dd>.*:\1@\2:;p;q;}'
pem@PeMTableT:~/Documents/mecatronic/scripts$ curl -s "http://lannuaire.service-public.fr/mairies/rhone-alpes/ain/mairie-01016-01.html" | sed -rn '/ \[ à \] /{s:.*<dd>(.*) \[ à \] (.*)</dd>.*:\1@\2:;p;q;}'
pem@PeMTableT:~/Documents/mecatronic/scripts$ curl -s "http://lannuaire.service-public.fr/mairies/bourgogne/nievre/mairie-58120-01.html" | sed -rn '/ \[ à \] /{s:.*<dd>(.*) \[ à \] (.*)</dd>.*:\1@\2:;p;q;}'
pem@PeMTableT:~/Documents/mecatronic/scripts$ 

Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#12 Le 04/01/2012, à 23:38

pingouinux

Re : [résolu] trouver et extraire une expression dans un fichier html

Bonsoir,
Autre proposition :

for fic in *.html
do
   sed -rn 's=^.*<dd> *([^& ]+) *&nbsp;\[ à \]&nbsp; *([^ ]+) *</dd>.*$=\1@\2=;T;p' "$fic"
done >ma_liste_adresse

Hors ligne

#13 Le 04/01/2012, à 23:44

sputnick

Re : [résolu] trouver et extraire une expression dans un fichier html

Essaye cetet version :

curl -s "http://lannuaire.service-public.fr/mairies/rhone-alpes/ain/mairie-01016-01.html" |
    sed -rn '/ \[ à \] /{s:.*<dd>(.*) \[ à \] (.*)</dd>.*:\1@\2:;p;q;}'

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#14 Le 04/01/2012, à 23:50

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

Ah lala... quand je pense qu'il y en a qui demandent "a quand la fin du terminal" !!!
Merci a tous! je pense qu'avec toutes vos réponses et google, je vais m'en sortir...
Une petite question cependant, y'a pas un "mode d'emploi" plus pratique que man pour awk et sed? parceque (ca ne tiens qu'a moi) c'est pas tres pratique man, c'est très bien pour les fonctions qui n'ont pas beaucoup de parametres mais pour ce genre de commandes (qui sont presque, ou peuvent etre, des pg a eux tout seul) c'est pas tres pratique (bis répétitas)

edit :
@sputnick ... idem... désolé... mais comme je comprend rien a la ligne...

Dernière modification par pem1664 (Le 04/01/2012, à 23:52)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#15 Le 04/01/2012, à 23:54

sputnick

Re : [résolu] trouver et extraire une expression dans un fichier html


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#16 Le 04/01/2012, à 23:55

pingouinux

Re : [résolu] trouver et extraire une expression dans un fichier html

Peut-être ceci : Petit guide sur Sed et Awk

Hors ligne

#17 Le 05/01/2012, à 00:01

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

@ Sputnick : big_smile (merci big_smile je connaissais pas cette facon de faire, mais elle m'a bien fait rire big_smile )
@ Pingouinux : merci wink v mater ca, et tacher de comprendre... ca m'evitera de poser des questions bete...

Dernière modification par pem1664 (Le 05/01/2012, à 00:03)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#18 Le 05/01/2012, à 00:06

nesthib

Re : [résolu] trouver et extraire une expression dans un fichier html

tiens, ça m'amusait du coup je t'ai fait le script :

#!/bin/bash

while read departement
do
    while read ville
    do
        echo ${ville}
        curl -s ${ville} | sed -n -e "/<title>/s/.*Mairie d[e' ]*\(.*\) - \(.*\) - \(.*\) -\([0-9]\+\).*/\2, \3 (\4), \1, /Ip" -e '/Téléphone/{n;s/.*\(+[ 0-9]\+\).*/\1/p}' | tr -d '\n' >>tel
        echo '' >>tel
    done < <(curl -s ${departement} | sed -n 's#.*\(mairies/.*.html\).*#http://lannuaire.service-public.fr/\1#p' | head -n3)
done < <(curl -s http://lannuaire.service-public.fr/navigation/index-mairie.html | sed -n '/contenuCarte/,/contenuForm/s#.*href="\([^"]*\).*#http://lannuaire.service-public.fr/navigation/\1#p' | head -n3)

je n'ai testé qu'avec un nombre limité de pages, si tu veux toutes les mairies il faut virer les deux « | head -n3 »

ce n'est pas garanti que ça fonctionne pour toutes les pages car j'ai noté qu'il y a parfois des variations mais tu devrais obtenir un fichier du genre :

Nord-Pas-de-Calais, Nord (59), Abancourt, +33 3 27 79 90 44
Nord-Pas-de-Calais, Nord (59), Abscon, +33 3 27 36 33 99
Nord-Pas-de-Calais, Nord (59), Aibes, +33 3 27 67 70 51
Nord-Pas-de-Calais, Pas-de-Calais (62), Ablain-Saint-Nazaire, +33 3 21 45 28 30
Nord-Pas-de-Calais, Pas-de-Calais (62), Ablainzevelle, +33 9 66 00 14 85
Nord-Pas-de-Calais, Pas-de-Calais (62), Acheville, +33 3 21 20 15 64
Picardie, Somme (80), Abbeville, +33 3 22 25 43 43
Picardie, Somme (80), ABLAINCOURT PRESSOIR, +33 3 22 83 97 40
Picardie, Somme (80), Acheux-en-Amiénois, +33 3 22 76 42 25

que tu peux ouvrir avec un tableur

pour les mails je n'en vois tout bêtement aucun sur la page, donc difficile de les récupérer ^^


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#19 Le 05/01/2012, à 00:17

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

@ Nesthib : euh... tout simplement... Whaow! et Merci! (bon je vais quand meme pas rester sur une solution de facilité et je vais essayer aussi!!) mais dis donc... en si peu de temps (j'ai du taf)!!
Bah je vais essayer ton script aussi ( merci encore wink )
Pour l'adresse mail c'est etrange c'est tout a la fin dans contact genre :

Courriel : mairieachun [ à ] wanadoo.fr
(pour cette page la http://lannuaire.service-public.fr/mair … 01-01.html )


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#20 Le 05/01/2012, à 00:25

sputnick

Re : [résolu] trouver et extraire une expression dans un fichier html

Version pour les mails (base du script de nesthib)

#!/bin/bash                                                                                                                                                                                                
                                                                                                                                                                                                           
while read departement                                                                                                                                                                                     
do                                                                                                                                                                                                         
    while read ville                                                                                                                                                                                       
    do                                                                                                                                                                                                     
        curl -s ${ville} | sed -rn '/\[ à \]/{s:.*<dd>(.*) \[ à \] (.*)</dd>.*:\1@\2:;p;q;}' | tee -a mails                                                                                                
    done < <(curl -s ${departement} | sed -n 's#.*\(mairies/.*.html\).*#http://lannuaire.service-public.fr/\1#p')                                                                                          
done < <(curl -s http://lannuaire.service-public.fr/navigation/index-mairie.html | sed -n '/contenuCarte/,/contenuForm/s#.*href="\([^"]*\).*#http://lannuaire.service-public.fr/navigation/\1#p')          
                                                                                                                                                                                                           
echo "Done, voir le fichier mails" 

Dernière modification par sputnick (Le 05/01/2012, à 00:28)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#21 Le 05/01/2012, à 00:29

nesthib

Re : [résolu] trouver et extraire une expression dans un fichier html

ah oui, je n'avais pas vu de mail dans les 2/3 pages que j'avais testées

du coup il faut mettre à jour la ligne :

curl -s ${ville} | sed -n -e "/<title>/s/.*Mairie d[e' ]*\(.*\) - \(.*\) - \(.*\) -\([0-9]\+\).*/\2, \3 (\4), \1, /Ip" -e '/Téléphone/{n;s/.*\(+[ 0-9]\+\).*/\1, /p}' -e '/Courriel :/{n;s/.*>\([^<]*\)<.*/\1/p}' -e 's/ \[ à \] /@/' | tr -d '\n' >>tel

edit : typo

Dernière modification par nesthib (Le 05/01/2012, à 00:35)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#22 Le 05/01/2012, à 00:35

nesthib

Re : [résolu] trouver et extraire une expression dans un fichier html

sinon, par curiosité, tu comptes faire quoi avec tout ces numéros/mails ?


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#23 Le 05/01/2012, à 00:50

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

Eh bé... les gars (facon de parler)... vous êtes fort... très fort... dire que je me complais a savoir gerer un pc en ssh... et que j'étais ravi de comprendre iptable (bon c'est des exemples)
Bah... déjà, merci (MERCI), je vais tester tout ca... et.. je vais tout de même essayer de trouver une facon de faire qui sera mienne (je ne veux toujours pas céder a la facilité mais la vous me compliquez la tache big_smile )

@ Nesthib : au final ça va pouvoir passer dans "trucs, astuces et scripts utiles"! (même si j'y suis pour rien)

Bon... bah j'ai plus qu'a... digérer sed et awk (pour awk... pas sur) et  poster le mien hmm (et le fichier complet aussi! parcequ'ils abusent quand meme 200e qu'ils vendent ca et c'est meme pas sur que ce soit a jour!)   

Un grand merci à vous 3 smile

Je vous tiens au courant!!


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#24 Le 05/01/2012, à 01:17

pem1664

Re : [résolu] trouver et extraire une expression dans un fichier html

@ Nesthib : bah moi rien du tout... mais bon je garde sous la main au cas ou, ca peut servir.

Sinon pour la petite histoire, j'ai un ami qui a monté une entreprise de vente de fourniture de bureau (discount) l'an dernier (meme si j'adorerais lui faire de la pub, je ne pense pas que ce forum soit la pour ca si interressé MP) et celui ci travaille déjà avec quelques mairies donc a les mandats pour ca (apparemment c'est compliqué de devenir fournisseur d'une administration) et l'ayant eu au tel today il m'a demandé si je savais comment obtenir une mailing list des mairies francaise. Après beaucoup de recherches google infructueuses (pas tout a fait le tarif c'est 200€ mais ca vient de sites qui ne garantissent pas que les adresses sont a jour entre autre) je me suis dit que le meilleur moyen d'avoir les adresses mail c'etait de passer par un site officiel (au début je pensais a un .gouv ) et je suis tombé sur un site officiel http://lannuaire.service-public.fr/
ce site propose toutes les adresses mail et toutes les coordonnées de toutes les mairies FR mais pas de fichier les regroupant.
Voilà moi, de mon côté, je ne pense pas m'en servir (je suis auto entrepreneur mais je vise plus un public attiré par les énergies renouvelable, la domotique et les systèmes embarqués)  mais j'adore le bash (puissant n'est-ce pas?), et je suis nul en la matière, mais j'espere progresser, vos exemples sont des exercices concrets et ca me ravi smile
Bon, voila pour la petite histoire... sinon en bref pas content que ce type d'informations soient payante alors que c'est du domaine public -> diffusion gratuite !


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#25 Le 05/01/2012, à 01:20

nesthib

Re : [résolu] trouver et extraire une expression dans un fichier html

Arf… tu m'aurais dit ça plutôt… j'aurais vendu mon script moitié prix tongue


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne