[vb6] pb de parsing html [Résolu]

tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 25 nov. 2005 à 22:28 - Dernière réponse : tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention
- 26 nov. 2005 à 19:59
jsui au bord du suicide!!!
voici mon pb:
je veu faire du parsing sur une page html simple.
voici une version simplifiee de mon code:

Public Sub search()
dim strsearch as string
dim startlink as integer
strsearch = Inet1.OpenURL("http://www.lien.com", icString)
For i = 1 To Len(strsearch)
If Mid(strsearch, i, 4) = "toto" Then
startlink = i + 10
Label1.Caption = startlink
end if
next
end sub

et ca ne marche pas, en gros je dois obtenir un nombre.

quest ce qui foire???
merci beaucoup!! ca fai 2jours kje suis dessus je voudrais bien avancer.
tototar

ps: dsl pour le double post jai pas trouvé la fonction "edit"
Afficher la suite 

18 réponses

tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 19:59
+3
Utile
probleme resolu: il suffisai juste dinstaller le SP6 !!!
tout le probleme venai juste de ca!!
merci a toi PCPT !!!!
Cette réponse vous a-t-elle aidé ?  
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 25 nov. 2005 à 22:46
0
Utile
salut,
faut d'abord attendre d'avoir ton fichier complet.
une fois fait, INSTR te retourne la position du premier "t" du premier "toto", ou 0 si non trouvé.
@+
PCPT [AFCK]
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 00:04
0
Utile
?? mai je lai mon fichier complet.
en testant par exemple juste apres le inet, avec un label1.caption = strsearch, jobtiens bien toute la page html.
mais par exemple quand je fai la meme chose un peu plus loin
genre avec startlink, ya aucune données.
c bizar. je comprend rien du tout.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 nov. 2005 à 00:34
0
Utile
startlink contiendra (normalement) la position du dernier "t" de "toto" + 10 si le texte contient moins de ~32000~ caractères
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 00:51
0
Utile
mais non!! il doit contenir la position du premier t de toto+10!! mais le pb c kil contien rien du tout!!!
peut etre a cause de cette limitation de 32000 caracteres.. c koi ca??
oula je vien de tester la longueur de strsearch avec len(strsearch), il me rend 1107 caracteres....alors qu'elle fai 49ko et contient largement plus que 1107 caracteres!!
donc ca doit etre pour ca quil ny a rien dans startlink, puisque en theorie startlink se trouve largement apres le caractere 1107....
si quelqun peut men dire plus.....
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 nov. 2005 à 01:10
0
Utile
beh c'est bien ce que je disais au début, il te faut le document complet.
32000 (environ), c'est l'entier déclaré :

Les
<OBJECT id= alink_4 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11></OBJECT>variables de type Integer sont stockées sous la forme de nombres de 16 bits (2 octets) dont la valeur est comprise entre -32 768 et 32 767

quant à un TextBox, il est aussi limité (65535). au dessus, il faut utiliser un RichTextBox.

voici un exemple. à toi d'adapter avec ta source html complète ;)


Dim strSearch As String
strSearch = "blabla etc... tout çà toto machin et même encore toto"

Dim lStartLink As Long
lStartLink = InStr (1, strSearch, "toto")

If lStartLink <> 0 Then
Label1.Caption = CStr(lStartLink + 10)
Else
MsgBox "toto non trouvé", 32
End If


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


PCPT [AFCK]
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 01:31
0
Utile
ouais mais justement jai changé mes declarations de variables, jai mis:
startlink as long
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 01:36
0
Utile
crotte ya u un bug ya pas la moitie de mon post et puis pas moyen de leffacer ou lediter dans ce forum!
je disais donc:
ouais mais justement jai changé mes declarations de variables, jai mis:
startlink as long et strsearch as variant
mais ca change strictement rien.
en fait l'inet est bloqué a 1107 caracteres, jsai pa pkoi!
le plus rageant cest que jai quasiment la meme fonction dans un autre projet mais juste avec une page different, c exactement le meme code quasi au mot pres et la pas de pb, jai tte ma page dans l'inet cest a dire plus de 8000 caracteres!
donc je comprend pas.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 nov. 2005 à 01:50
0
Utile
cherche sur le forum et dans les codes comment télécharger une source html avec inet...
je cherche pendant ce temps sur mon disque. c'est une réponse que j'ai déjà donné sur le forum
(mais je ne l'ai plus en tête^^)

en tout cas, à ton problème de "parse", ma réponse ci-dessus devrait correspondre à tes besoins.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 nov. 2005 à 01:54
0
Utile
strsearch = Inet1.OpenURL("http://www.lien.com", icString)
Do While Inet1.StillExecuting = True
DoEvents
Loop
'.....

çà fonctionne?
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 02:16
0
Utile
ben normalement ca fonctionne pas plus, puisque je test ce quil y a dans l'inet avant de lancer mes boucles. du coup le pb ne peu venir que de l'inet. apparement jai vu sur msdn quil y a u d bugs avec inet, il recuperai des fichiers incomplets, mais avec vb5 ou ie4 ! donc cest bug nont plus cour normalement.petite precision, je fai du parsing sur allociné. apparement allocine pose pas mal de probleme pour faire du parsing. et jai epluché tou le forum depui deux jours!!jai plu qua sauter par la fenetre..
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 02:22
0
Utile
je veu bien tenvoyer ma src si tu veu tu verifira mon code. si ca se trouve jai une grossiere erreur dans mon code et je la voi pas. jsui loin detre infaillible.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 nov. 2005 à 04:35
0
Utile
j'ai un peu l'impression de t'avoir plus que mâché le boulot mais bon...

suite à ton (tes...) MP :


' --------------------------------------
' contenu complet de ta Form "frmsearch"
' --------------------------------------
'
'
Private Sub cmdSearch_Click()
Dim aResults() As String
If mdlsearch.Search(cmbsearch.Text, aResults()) > 0 Then
' ... juste pour l'exemple
Dim i As Long, sMess As String
sMess = ""
For i = 1 To UBound (aResults)
sMess = sMess & Replace(aResults(i), mdlsearch.cSepar, " ") & vbCrLf
Next i
MsgBox sMess, 32, "résultats"
Else
MsgBox "aucun résultat" 'ou pas de mot clé...
End If
End Sub

' -----------------------------------------
' contenu complet de ton module "mdlsearch"
' -----------------------------------------
'
'
Option Explicit
'
Public Const cSepar As String = "###"
'
'
Public Function Search(ByVal sKeyWord As String, ByRef aUrls() As String) As Long 'retourne 0 si erreur ou non-trouvé

' on enlève les espaces avant et après
sKeyWord = Trim$(sKeyWord)

' si vide, bye! If LenB (sKeyWord) 0 Then Search 0: Exit Function

' on formate le mot-clé
sKeyWord = Replace (sKeyWord, " ", "+")

' récupère toute la source
Dim sSource As String
On Error GoTo ErrHandler
With frmsearch.Inet1
.AccessType = icUseDefault
.protocol = icHTTP
sSource = .OpenURL("http://www.allocine.fr/recherche/?motcle=" & sKeyWord & "&rub=1", icString)
Do Until Not (.StillExecuting)
DoEvents
Loop
End With
On Error GoTo 0 '*FGE*

'*
Debug.Print "à ce point, la source est complète. elle contient " & Len (sSource) & " caractères."
'*

' init tableau résultats. ils seront à lire à partir de l'indice 1
ReDim aUrls(0)
aUrls(0) = Chr$(0)

' parse
Dim i As Long, j As Long
Dim lStartLink As Long, lStopLink As Long
Dim sLinkFound As String, sLinkLib As String
Dim lCpt As Long
lCpt = 0

On Error GoTo ErrHandler
For i = 1 To Len (sSource)
If Mid(sSource, i, 39) = "[ & Chr(34) & " Then
lStopLink = j
sLinkFound = "http://www.allocine.fr" & Mid (sSource, lStartLink, lStopLink - lStartLink)
'Debug.Print "link = " & sLinkFound
lStartLink = j + 19
Exit For
End If
Next j

' j'ai pas touché à çà mais tes coupures sont incorrectes. test avec "samantha"
For j = lStartLink To lStartLink + 100
If Mid (sSource, j, 13) = "]
" Then
lStopLink = j
sLinkLib = Mid (sSource, lStartLink, lStopLink - lStartLink)
'Debug.Print "toto = " & sLinkLib
lStartLink = j
End If
Next j

lCpt = lCpt + 1

' on retravaille le libellé
sLinkLib = Replace (sLinkLib, "", vbNullString)
sLinkLib = Replace(sLinkLib, "", vbNullString)

' on sauve
ReDim Preserve aUrls(lCpt)
aUrls(lCpt) = sLinkFound & cSepar & sLinkLib

End If

Next i
On Error GoTo 0 '*FGE*

' fin
Search = lCpt
Exit Function

ErrHandler:
Debug.Print Err.Number & " : " & Err.Description
Err.Clear
Erase aUrls
Search = 0
End Function



<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


++
PCPT [AFCK]
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 16:54
0
Utile
je vien de refaire le copie coller.
ca ne marche toujours pas.
avec "arme fatale" il me rend 1107caracteres et aucun resultats....
ya pas un pb ailleurs que dans la source???
genre un firewall, ou une option dans vb que jaurai oublier de cocher ou une connerie comme ca??
(mes firewall sont desactives..)
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 nov. 2005 à 17:21
0
Utile
faire et tester un code, je peux.
être dans ton ordi, c'est autre chose.


à toi de détailler mon code, (puisque tu es sensé déjà avoir compris le tien).
ce code prend la totalité de la source. les parties non-modifiées (ton code) quant à elles, renvoient des valeurs incorrectes au niveau du parsing du titre (jusqu'à renvoyer 0 par ma fonction).
celà arrive tout de même après la réception complète de la source.

désolé mais le boulot est sous tes yeux et entièrement fait et fonctionnel, tu n'as plus qu'à modifier ce que je t'ai indiqué en MP. si ce n'est pas suffisant, tape "allocine" (3e fois...) dans le moteur, il existe déjà des sources qui font ce que tu recherches.

bonne continuation.
ps : un topic terminé se valide.... (celui-ci si çà te convient et l'autre "inet")

++
PCPT [AFCK]
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 17:30
0
Utile
oui je sais que ya une ptite erreur au niveau des tag html que jai pas enlevé.
mais ca c pas important pour linstant.
vu que jai copier coller ton code, je dois obtenir le meme resultat que toi! or il me rend pas pareil!
c ca qui est incomprehensible. par exemple si tu test la longueur de la page html juste apres lavoir chargée, tu obtiens 48000 environ non?? moi jobtiens 1107. du cou ma boucle sarrete aussitot et ne trouve pas de resultats.
le truc c de savoir pkoi il nest chargé que 1107 caracteres.... mais la jen sais rien du tout et jai presk plu de cheveu....
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 nov. 2005 à 17:44
0
Utile
trace :

mot-clé : arme fatale
à ce point, la source est complète. elle contient 51483 caractères.

mot-clé : madonna
à ce point, la source est complète. elle contient 51597 caractères.

mot-clé : rambo
à ce point, la source est complète. elle contient 47885 caractères.

mot-clé : laurel et hardy
à ce point, la source est complète. elle contient 55702 caractères.

j'vois pas ce que je peux faire de plus...
tototar 26 Messages postés mercredi 19 octobre 2005Date d'inscription 8 décembre 2005 Dernière intervention - 26 nov. 2005 à 17:49
0
Utile
et moi jai ca:

mot-clé : arme fatale
à ce point, la source est complète. elle contient 1107 caractères.

mot-clé : madonna
à ce point, la source est complète. elle contient 1053 caractères.

mot-clé : rambo
à ce point, la source est complète. elle contient 1053 caractères.

mot-clé : laurel et hardy
à ce point, la source est complète. elle contient 1107 caractères.

pourtant on a exactement le meme code puisk jai viré tout mon code et jai copier coller le tien!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.