#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... ).
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... 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 [ à ] 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 [ à ] machin.fr </dd> puis le copier dans un fichier et passer à la ligne.
Après j'aimerais retravailler ce fichier pour virer [ à ] 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 [ à ] )
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
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... )
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>([^\&]+)\ \[ à \]\ (.*)</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 (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... )
PS.. me reste plus qu'a faire le script et poster la liste si ca interresse quelqu'un
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
Dernière modification par nesthib (Le 04/01/2012, à 23:01)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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
je ne part pas de la solution idéale, mais du "cahier des charges" donné ici même
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
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
@ sputnick j'aime bien ta solution merci, ca répond tout a fait au cahier des charges!!
edit : ca a l'air compliqué sed... autant qu 'awk !!
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> *([^& ]+) * \[ à \] *([^ ]+) *</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 : (merci je connaissais pas cette facon de faire, mais elle m'a bien fait rire )
@ Pingouinux : merci 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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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 )
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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 )
@ 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 (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
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
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
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne