Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SCRUTER UNE PAGE WEB À LA RECHERCHE DES LIENS ET DES ADRESSES MAIL


Information sur la source



Description

Cliquez pour voir la capture en taille normale
c'est une petite application qui charge une page web et cherche chaque lien et chaque email pour les afficher dans des listeview. j'ai pris des fonctions que j'ai touvé ici sur le site csharpfr.com et je les ai modifié un peu et je les ai marié pour arrivé à ça :)  en fin je n'ai fait que développer :)
 

Conclusion

reste à enlevé les doublant, mais, je préfere faire cette manipe quand j'insert dans une base de données.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de sebmafate le 06/02/2008 11:59:27 administrateur CS

mouaip... beaucoup de chose pour pas grand chose : 2 regex et le tour est joué :)

signaler à un administrateur
Commentaire de FREMYCOMPANY le 06/02/2008 12:06:40

2 regexp quand même pas.
Je penses qu'il en faudrait au moins 3/4.

Comme ca, sans réfléchir, je dirais :
Lien/images :/(href|src)=(|'|")([^ '"]*)( |\>|'|")/
CSS : /url\((|'|")([^'"]*)(|'|")\)/
Texte et/ou javascript : /(https?\:\/\/[^ ]*\s+|www\.[^ ]*\s+)/

Mais bon, faudrait approfondir et tester [:)]

signaler à un administrateur
Commentaire de developper_man le 06/02/2008 12:21:18

merci

signaler à un administrateur
Commentaire de Zeroc00l le 06/02/2008 18:32:16

Mon dieu que c'est laid (même sans réfléchir) ...
(|'|") est equivalent a ['"]?
et en plus ça ne capture pas (donc c'est plus rapide)
Voire même pour accelerer autant capturer les caractères (ou chaine) de début et de fin et les retirer lorsqu'on exploite le résultat de la regexp
Ca sera plus rapide aussi puisque que la regexp sera déterministe.

Sinon quel interêt de trouver des adresses mail dans une page
si ce n'est pour spammer ?

signaler à un administrateur
Commentaire de FREMYCOMPANY le 06/02/2008 22:36:54

Vieille habitude de JavaScript, quand j'ai commencé à apprendre les regexp.
Au début j'utilisais souvent (|'|") et c'est resté. Quand j'utilse [], c'est pas pour faire des choix, mais bien pour faire des ranges [a-zA-Z0-9$_]*, ca me parait plus logique et plus proche de ce pourquoi il a été créé.

Mais bon c'est vrai que ['"]? fait le même travail que (|'|"), peut-être plus vite, ca reste à voir. Je vais faire un test et je te tiens au courrant

Par contre pour l'intérêt, je suis aussi de ton avis... Mais bon, c'est toujours utile de se trouver des objectifs inutiles pour tester ses connaissances et les approfondir...

De toute facon, l'intérêt majeur réside ici dans la recherche des liens, je pense...

signaler à un administrateur
Commentaire de FREMYCOMPANY le 06/02/2008 22:41:42

Désolé pour toi, mais en DotNet au moins, ma méthode est donnée plus rapide : +/-12000t à +/-6500t sur mon PC.

Voici mon code de test, qui me semble tout à fait équitable :

Dim w As New Stopwatch()
Dim e1 As New System.Text.RegularExpressions.Regex("href=['""]?(.*)[> '""]")
Dim e2 As New System.Text.RegularExpressions.Regex("href=(|'|"")(.*)(>| |'|"")")

w.Start()
For x As Integer = 0 To 10000
     e1.Matches("<a href=1 href='2' href=""3"" href=4>Some text</a>")
Next
w.Stop()
MessageBox.Show(w.ElapsedTicks)
w.Reset()

w.Start()
For x As Integer = 0 To 10000
    e2.Matches("<a href=1 href='2' href=""3"" href=4>Some text</a>")
Next
w.Stop()
MessageBox.Show(w.ElapsedTicks)

signaler à un administrateur
Commentaire de Zeroc00l le 10/02/2008 02:13:58

Hum... A mon avis tu n'a pas fais assez de tour de boucle ...
Je ne dit pas ca parcque j'aime pas avoir tord pas du tout :)
J'ai converti ton code en C# (j'aime pas le VB desole)

        static void Main(string[] args)
        {
            long score = 0;

            Stopwatch w = new Stopwatch();
            Regex e1 = new Regex("href=['\"]?(.*)[> '\"]");
            Regex e2 = new Regex("href=(|'|\")(.*)(>| |'|\")");
            string test = "<a href=1 href='2' href=\"3\" href=4>Some text</a>";

            w.Reset();
            w.Start();
            for(int x = 0; x < 10000; ++x)
                e1.Matches(test);
            w.Stop();
            score = w.ElapsedTicks;

            w.Reset();
            w.Start();
            for(int x = 0; x < 10000; ++x)
                e2.Matches("<a href=1 href='2' href=\"3\" href=4>Some text</a>");
            w.Stop();
            MessageBox.Show("Ma méthode " + score.ToString() + "\n" +
                            "Ta méthode " + w.ElapsedTicks.ToString());
        }

J'obtiens n'importe quoi ...
Des fois ma méthode est 10 fois plus longues que la tienne !!!
Et si j'inverse e1 et e2 ca refait le meme résultat (en faveur de ma méthode :) )--> il doit y avoir un biais du langage
Des fois non, les résultats sont très similaires.
Donc j'augmente le nombre de tour de boucle (10 000 000)
La j'obtiens le résultat suivant : les deux sont vraiment très identiques
L'un surpassant l'autre (de très peu) à chaque fois que je relance...
Quand on y réfléchit c'est très logique !
Les graphes internes sont équivalents en terme de chemin !
Les résultats sont donc équivalents, cela dit je note que la première méthode testée subit toujours un petit temps supplémentaire par rapport à l'autre
(Ta méthode semblait être quelques millièmes (voire un centieme) plus rapide que la mienne mais quand j'ai inversé e1 et e2 c'est la tendance inverse que j'ai constaté)

Moralité : On (je ?) trolle pour rien :p

signaler à un administrateur
Commentaire de FREMYCOMPANY le 10/02/2008 11:22:55

C'est marrant ca ;)
Ben oui, c'est possible en fait. J'avais pas pensé à intervertir le deux pour voir le résultat.

Et tu dois avoir raison, la regExp doit au final être compilée de manière semblable pour les deux expressions.

Donc on a trollé pour rien :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

lien dynamique à partir d'un datagrid [ par ramos_ramzy ] Bonjour à tous,J'ai un petit problème de lien. J'explique la situation:J'ai un datagrid. Une colonne de ce datagrid est composée d'une HyperLinkColumn Lien et bouton [ par ramos_ramzy ] Bonjour tout le monde,J'aimerai créer un bouton tout bête, dont l'action serai d'ouvrir une nouvelle page aspx, et dont l'adresse de cette page est dé ouverture d'un lien par programme [ par gama71 ] Salut,j'ai un petit probleme a résoudre et je sais pas par quel bout l'attaquer :sur un epage web dont j'ai l'url se trouve un "lien" sur le quel on c Response.Redirect [ par amirirn1 ] Bonjour à tous, je suis entrain de faire un site internet en Asp,j ai un GrilView qui contient des elements et sur chaques ligne j ai un lien pour une Problème avec un lien [ par woot6768 ] Je voudrais annoncer aux admins qu'il y a un bugg sur le lien 'thèmes' ou 'liste des thèmes' pour accéder au forum.Je précise bien que le problème n'e Lien dans une infobulle (tooltip) [ par NooD ] Bonjour à tous et à toutes,J'aimerais savoir s'il était possible d'intégrer un lien dans un infobulle si oui comment ?Je précise que le lien doit être ouverture d'un lien sur un site web par application [ par gama71 ] Bonjour, je suis toujours coincé par un probleme d'ouverture d'un lien qui devrait etre ouvert par mon application.Sur un site web il y a un lien sur la mise en page dans visual web developer 2005 express [ par ad_sayouri ] Salut!je suis entrain de développer une application intranet avec visual web developer 2005 express et j'ai rencontré certains problèmes inhabituels ( Détecter le piratage en brute force sur la page login [ par Cipoli ] Bonjour a tous, Merci d'avance pour votre aide. Je ne recherche pas forcément une solution toute prête. Un principe de réalisation me conviendrai.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.