[regexp] Google URL seulement
Gihef
Messages postés
5165
Statut
Contributeur
-
sebsauvage Messages postés 33415 Statut Modérateur -
sebsauvage Messages postés 33415 Statut Modérateur -
Bonjour,
Dans un post du Forum webmastering affich 2349141 il est demandé comment ne conserver que les liens dans les résultats des moteurs de recherche.
Merci de prendre la peine de le lire.
J'ai pensé que grep, que je viens de découvrir, pouvait être utile et ai donc essayé.
Les résultats que j'obtiens sont presque corrects. Je butte toutefois sur un problème.
Il reste, à la fin du remplacement, une chaîne inutile suivie du motif qui me sert de repère “\→ </p>”
Merci de m'éclairer.
Dans un post du Forum webmastering affich 2349141 il est demandé comment ne conserver que les liens dans les résultats des moteurs de recherche.
Merci de prendre la peine de le lire.
J'ai pensé que grep, que je viens de découvrir, pouvait être utile et ai donc essayé.
Les résultats que j'obtiens sont presque corrects. Je butte toutefois sur un problème.
Il reste, à la fin du remplacement, une chaîne inutile suivie du motif qui me sert de repère “\→ </p>”
Merci de m'éclairer.
A voir également:
- [regexp] Google URL seulement
- Url - Guide
- Google maps - Guide
- Google maps satellite - Guide
- Google photo - Télécharger - Albums photo
- Dns google - Guide
12 réponses
Salut,
j'ai regardé les 2 messages mais pour dire la verité je n'ai pas très bien compris.
Pourquoi?
En général dans le parsing d'un fichier c'est bien d'avoir l'entrée - le traitement - la sortie.
Je crois que les tests que tu fait sont plutôt ponctuels (corrige moi si je me trompe) donc donnée une solution généralisée ce n'est pas si simple.
Par exemple avec Perl tu as des modules sur Cpan pour manipuler des données html.
Les liens on les trouves dans les balises <a href=".....">lien</a>
Donc dans l'absolu tu n'as qu'à récuperer ce que tu trouve entre guillements.
Il faut pourtant tenir compte des pièges. La gourmandise et l'impatience d'une regex (je n'aime pas trop regexp).
lami20j
j'ai regardé les 2 messages mais pour dire la verité je n'ai pas très bien compris.
Pourquoi?
En général dans le parsing d'un fichier c'est bien d'avoir l'entrée - le traitement - la sortie.
Je crois que les tests que tu fait sont plutôt ponctuels (corrige moi si je me trompe) donc donnée une solution généralisée ce n'est pas si simple.
Par exemple avec Perl tu as des modules sur Cpan pour manipuler des données html.
Les liens on les trouves dans les balises <a href=".....">lien</a>
Donc dans l'absolu tu n'as qu'à récuperer ce que tu trouve entre guillements.
Il faut pourtant tenir compte des pièges. La gourmandise et l'impatience d'une regex (je n'aime pas trop regexp).
lami20j
Bonjour,
“je n'ai pas très bien compris”, ça me rassure car ‘je débute’ (-:
J'aime traiter des données, du texte et ces outils, que je découvre, grep, sed, awk… me plaisent. Perl encore plus, mais je n'en suis pas encore là.
“les tests que tu fait sont plutôt ponctuels”. En effet et je l'indique ‘il faudra adapter’. Ça ne fonctionne que dans l'environnement (Google) que je cite.
La piste que je propose évite d'avoir à écrire un script (une future étape, peut-être ? Du type shell script qui semble plutôt adapté. Ou en Perl, mais plus tard encore.)
Je suis donc contraint, avec l'outil dont je dispose, de traiter dans le fichier (pas de sortie) et donc d'enlever tout ce qui est en trop. Et en un seul passage*.
J'aurais préféré pouvoir récupérer les <a class=l href="…> et les envoyer ailleurs.
En voilà des contraintes.
* paulau profil paulau n'a pas enregistré de profil et c'est son seul message. J'ai supposé qu'il est un utilisateur de Windows de base (?)
+ “des modules sur Cpan” c'est-à-dire ?
“je n'ai pas très bien compris”, ça me rassure car ‘je débute’ (-:
J'aime traiter des données, du texte et ces outils, que je découvre, grep, sed, awk… me plaisent. Perl encore plus, mais je n'en suis pas encore là.
“les tests que tu fait sont plutôt ponctuels”. En effet et je l'indique ‘il faudra adapter’. Ça ne fonctionne que dans l'environnement (Google) que je cite.
La piste que je propose évite d'avoir à écrire un script (une future étape, peut-être ? Du type shell script qui semble plutôt adapté. Ou en Perl, mais plus tard encore.)
Je suis donc contraint, avec l'outil dont je dispose, de traiter dans le fichier (pas de sortie) et donc d'enlever tout ce qui est en trop. Et en un seul passage*.
J'aurais préféré pouvoir récupérer les <a class=l href="…> et les envoyer ailleurs.
En voilà des contraintes.
* paulau profil paulau n'a pas enregistré de profil et c'est son seul message. J'ai supposé qu'il est un utilisateur de Windows de base (?)
+ “des modules sur Cpan” c'est-à-dire ?
Salut,
J'aurais préféré pouvoir récupérer les <a class=l href="…> et les envoyer ailleurs.
Je n'aime pas trop d'écrire des regex sans avoir un vision de ce que je cherche.
Dans ton cas la question que je me pose est :
tu veux récuperer les <a class=l href="…> ou supprimer les NON <a class=l href="…>?
CPAN = Comprehensive Perl Archive Network
https://www.cpan.org/
http://www.cpan.org/modules/index.html
lami20j
J'aurais préféré pouvoir récupérer les <a class=l href="…> et les envoyer ailleurs.
Je n'aime pas trop d'écrire des regex sans avoir un vision de ce que je cherche.
Dans ton cas la question que je me pose est :
tu veux récuperer les <a class=l href="…> ou supprimer les NON <a class=l href="…>?
CPAN = Comprehensive Perl Archive Network
https://www.cpan.org/
http://www.cpan.org/modules/index.html
lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci.
Je veux en effet supprimer tout ce qui n'est pas des href.
Et, tant qu'à faire, ne conserver qu'une seule référence à la même adresse. Et les “class=l” en sont une.
En effet, dans https://www.google.fr/search?as_q=regexp&num=100&hl=fr&lr=lang_fr&gws_rd=ssl Google cite 3 fois la même référence et celle en “class=l” semble être la plus simple à traiter
Remarque, ils sont sympas, il mettent des repères <!--a--> ou <!--z--> etc. et leur mise en page en CSS fournit des classes comme <p class=g> <a class=fl href="… Je m'en suis servi dans moteur de recherche extraction selective
(<!--a--><div>… ou (<a class=l href=")
Veux-tu que je tente de t'indiquer à quoi (je suppose !) correspondent mes motifs ?
(<!--a--><div><p [\W\w\s]*?|<table [\W\w\s]*?)(<a class=l href=")(.*?)(">)[\W\w\s]*?(</a>)|(</a>[\W\w\s\D]*?Google</font>)
Je veux en effet supprimer tout ce qui n'est pas des href.
Et, tant qu'à faire, ne conserver qu'une seule référence à la même adresse. Et les “class=l” en sont une.
En effet, dans https://www.google.fr/search?as_q=regexp&num=100&hl=fr&lr=lang_fr&gws_rd=ssl Google cite 3 fois la même référence et celle en “class=l” semble être la plus simple à traiter
<a class=l href="http://www.expreg.com/memo.php">REGEX - <b>REGEXP</b> - Expressions régulières en PHP - Aide-mémoire</a>Les autres sont “En cache” ou “Pages similaires”.
Remarque, ils sont sympas, il mettent des repères <!--a--> ou <!--z--> etc. et leur mise en page en CSS fournit des classes comme <p class=g> <a class=fl href="… Je m'en suis servi dans moteur de recherche extraction selective
(<!--a--><div>… ou (<a class=l href=")
Veux-tu que je tente de t'indiquer à quoi (je suppose !) correspondent mes motifs ?
(<!--a--><div><p [\W\w\s]*?|<table [\W\w\s]*?)(<a class=l href=")(.*?)(">)[\W\w\s]*?(</a>)|(</a>[\W\w\s\D]*?Google</font>)
Re,
Voilà ce que ça donne en Perl (je répète, c'est superficiel)
J'ai sauvegarder le code source dans gihef.txt
Voilà ce que ça donne en Perl (je répète, c'est superficiel)
J'ai sauvegarder le code source dans gihef.txt
#! /usr/bin/perl
#
use strict;use warnings;
open FIC,"gihef.txt"
or die "E/S : $!\n";
while ( <FIC> ) {
print $1,"\n" if /<a\s*class=l\s*href="(http:\/\/.*?)">/g;
}lami20j
Ça marche.
Je l'ai enregistré dans le dossier prévu pour les scripts de TW en convertissant les fins de lignes pour Unix et hop…
Et puis, comme “c'est superficiel”, je comprends.
Tu pourrais me faire le même mais en me conservant un doc. html ?
C'est à dire avec des liens cliquables.
Du genre :
Tu vois. Chaque adresse reprise commme texte du lien.
Faut vraiment que je me mette à Perl (-:
Je l'ai enregistré dans le dossier prévu pour les scripts de TW en convertissant les fins de lignes pour Unix et hop…
Et puis, comme “c'est superficiel”, je comprends.
Tu pourrais me faire le même mais en me conservant un doc. html ?
C'est à dire avec des liens cliquables.
Du genre :
<html><head>…<body> <a href="http://www.expreg.com/">http://www.expreg.com/</a> … </html>
Tu vois. Chaque adresse reprise commme texte du lien.
Faut vraiment que je me mette à Perl (-:
#! /usr/bin/perl
#
use strict;use warnings;
open FIC,"gihef.txt"
or die "E/S : $!\n";
print "<html><head>..<head>\n";
print "<body>";
while ( <FIC> ) {
print "<a href=\"$1\">$1</a>","\n"
if /<a\s*class=l\s*href="(http:\/\/.*?)">/g;
}
print "</body>\n</html>\n";lami20j
En essayant, ça ne pourrait pas ressembler à :
J'essaye.
print "<a>",$1,"\">",$1,</a>",\n" if /<a\s*class=l\s*href="(http:\/\/.*?)">/g;?
J'essaye.
J'ai fait exactement ce genre de chose en Python, justement:
https://sebsauvage.net/python/snyppets/index.html#google_search
ça ne ramène les liens, et que les liens.
et ça parcours automatiquement les pages de résultat.
Libre à vous de réutiliser le source ou juste la regex.
https://sebsauvage.net/python/snyppets/index.html#google_search
ça ne ramène les liens, et que les liens.
et ça parcours automatiquement les pages de résultat.
Libre à vous de réutiliser le source ou juste la regex.
Merci à vous,
On pourrait finir en chanson :
“… You know, my Python boot is too tight
I could'nt get it off last night
A week went by
And now it's July
I finally got it off
And my girlfriend cried
You've got…”
… à votre avis ?
On pourrait finir en chanson :
“… You know, my Python boot is too tight
I could'nt get it off last night
A week went by
And now it's July
I finally got it off
And my girlfriend cried
You've got…”
… à votre avis ?
Oui pas mal,
mais je pense toujours au perles qu'aux serpents
Regarde ça https://en.wikipedia.org/wiki/Black_Perl
Et je reste toujours avec l'opinion que la lisibilité du langage depends de celui qui écrit le code et pas de langage lui même.
Maintenant il nous reste qu'à comprendre les mots.
Une calligraphie japonaise est très lisible, mais celui qui ne comprends pas les mot, peut-il dire que c'est ilisible?
De même pour le regex, et en fait pour n'importe quel langage.
lami20j
P.S. Voilà un lien cadeau https://docstore.mik.ua/orelly/bookshelfs.html
mais je pense toujours au perles qu'aux serpents
Regarde ça https://en.wikipedia.org/wiki/Black_Perl
Et je reste toujours avec l'opinion que la lisibilité du langage depends de celui qui écrit le code et pas de langage lui même.
Maintenant il nous reste qu'à comprendre les mots.
Une calligraphie japonaise est très lisible, mais celui qui ne comprends pas les mot, peut-il dire que c'est ilisible?
De même pour le regex, et en fait pour n'importe quel langage.
lami20j
P.S. Voilà un lien cadeau https://docstore.mik.ua/orelly/bookshelfs.html