kkZ
Messages postés19Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention30 avril 2008
-
24 avril 2008 à 14:47
kkZ
Messages postés19Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention30 avril 2008
-
29 avril 2008 à 00:53
Bonjour,
Je commence par un topo de mon application. Je réalise actuellement un projet assez vaste (environ 1 an de développement). Il s'agit d'un moteur de recherche ayant pour but de référencer tout ce qui existe sur le net (de la page web au lien rss, ed2k, chat irc, serveur smtp, pop... bref, un accès direct à chaque ressource du monde web). Ce projet est divisé en 5 outils, eux mêmes tapant dans 3 bases de données mysql. Le principe de fonctionnement est similaire à [mailto:folding@home : un folding@home : un] serveur principal, plusieurs sous serveurs, et le but avoir des milliers de clients qui "traitent" les packages disponibles. Ce moteur de recherche est recursif, à partir du moment ou on le lance, celui-ci s'enrichit tout seul des objets trouvés par les clients, etc, etc... mais ce moteur de recherche n'est pas un outil commercial, il a pour but certes de générer du revenu ET une majeure partie de celui-ci est donné aux associations caricatives dans le monde, des oeuvres pour lutter contre le sida, le cancer, toutes sortes de maladies mais également à aider les plus démunis des PEVD, bref aider son prochain sans dépenser directement des ressouces financières. Je supporte actuellement seul les coûts de développement et de structures (serveur, nom de domaine, hébergement).
Bref, voici pour le projet, en quelques lignes. A présent, j'ai réaliser les 2 premiers modules (serveurs et sous serveurs) ainsi qu'une bonne partir du client. A présent, je souhaite analyser les webpage. Celles-ci arrivent dans un package (fichier XML) que le client a prix (gripp) et qu'il doit traiter (fill). il s'agit la du code de la page web.
Ce que je voudrais, c'est pouvoir extraire les données entre des balises définis (ces balises existent déjà et le client "sait" ce qu'il doit extraire comme données), la question c'est comment ? Expressions régulières ?
Ex : je veux extraire le contenu se trouvant entre <title>test</title>, ou bien dans le header comme cela <meta name="author" content="Nix">, je devrai donc avoir un résultat comme celui ci après analyse :
title_page="test"
meta_author="Nix"...
Ca devra aussi faire de même pour les emails (ex depuis [mailto:test@gmail.com mailto:test@gmail.com] qui sortira mail=test[mailto:mail=test@gmail.com @gmail.com]) ou des liens ed2k (ex: <ed2k://ressouce>ressources_nom</ed2k> qui sortira ed2k=ressource:nom_ressources), et plus généralement tous les types de balises défnis par l'application.
En somme, c'est une extraction de textes, je pense que les ER peuvent remplir parfaitement ce rôle, de façon rapide, fiable et à ne pas pénaliser le client, merci de me dire si c'est le cas. Pour ma part, j'attend des réponses concrêtes à cette logique.
Je vous demande de bien vouloir croire en ce projet,
Cordialement;
kkZ
Ps : pour avoir des données concrêtes, enregistrer simplement la source de cette page et tentez de faire une extraction depuis quelques balises. c'est simple mais je m'y heurte quelque peu.
Me... kkZ
A voir également:
Isoler un texte depuis une balise (expressions regulieres ?)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 25 avril 2008 à 12:49
testé, OK
Private Sub Form_Load()
Dim lStart As Long, sRet As String
lStart = 1
Do While lStart
sRet = MyMid("mailto:test1@gmail.com
mailto:test2@gmail.com mailto:test3@gmail.com mailto:test4@gmail.com bla bla bla
évidemment mailto:test5@gmail.com ", "mailto:", "
", lStart)
If LenB(sRet) Then Debug.Print "mail=" & Chr$(34) & sRet & Chr$(34)
Loop
Unload Me
End Sub
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 avril 2008 à 01:04
Salut
Intéresse toi aux techniques utilisées pour le coloriage syntaxique du langage HTML : il y a plein d'exemples.
Tu y trouveras bien des idées.
Regarde aussi du côté du XML
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Private Function MyMid(ByRef Expression As String, sLeft As String, sRight As String, Optional Start As Long = 1) As
String
Dim lPosL As Long, lPosR As Long
lPosL = InStr(Start, Expression, sLeft): lPosR = InStr(lPosL + 1, Expression,
sRight)
If lPosL > 0 And lPosR > 0 Then
MyMid = Mid$(Expression, lPosL + Len(sLeft), lPosR - lPosL - Len(sLeft))
Else
MyMid = vbNullString
End If
End Function
kkZ
Messages postés19Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention30 avril 2008 25 avril 2008 à 12:27
Merci pour toutes ces réponses,
j'avais déjà trouvé ce code sur codyx. Il fonctione très bien et réaliser parfaitement l'opération mais j'ai peur que, le fonctionnement de l'appli étant récursif, cela pénalise les performances.
Je vais continuer sur cette voie mais je prend tout ce qui est en rapport avec les expressions régulières.
Cordialement,
Me... kkZ
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 25 avril 2008 à 12:44
légère modif alors :
Private Function MyMid(ByVALExpression As String, sLeft As String, sRight As String,<strike>Optional</strike> ByRef Start As Long <strike>= 1</strike>) As String
Dim lPosL As Long, lPosR As Long
lPosL = InStr(Start, Expression, sLeft): lPosR = InStr(lPosL + 1, Expression, sRight)
If lPosL > 0 And lPosR > 0 Then
MyMid = Mid$(Expression, lPosL + Len(sLeft), lPosR - lPosL - Len(sLeft))
Start=lposr+len(sright)
Else
MyMid = vbNullString
Start=0
End If
End Function
plus qu'à déclarer un lStart initialisé à 1 et boucler tant que <>0
pas testé mais çà devrait être bon...
(attention à bien supprimer ce que j'ai rayé!)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
kkZ
Messages postés19Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention30 avril 2008 29 avril 2008 à 00:53
Encore merci pour ces réponses,
j'ai pu déjà utiliser ce code à ma façon et cela fonctionne très bien.
Je suis à présent en mesure de récupérer la totalité des balises désirées et cela de façon recursive.
Si vous avez des sources avec une utilisation en REGEXP, je suis preneur (certain que cela se fait mais je suis encore en train d'apprendre correctement l'utilisation -et c'est pas évident-)