tototar
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005
-
25 nov. 2005 à 22:28
tototar
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005
-
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"
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 25 nov. 2005 à 22:46
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
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005 26 nov. 2005 à 00:04
?? 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.
tototar
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005 26 nov. 2005 à 00:51
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
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 26 nov. 2005 à 01:10
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
tototar
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005 26 nov. 2005 à 01:36
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
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 26 nov. 2005 à 01:50
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.
tototar
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005 26 nov. 2005 à 02:16
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
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005 26 nov. 2005 à 02:22
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
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 26 nov. 2005 à 04:35
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)
tototar
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005 26 nov. 2005 à 16:54
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
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 26 nov. 2005 à 17:21
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")
tototar
Messages postés26Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention 8 décembre 2005 26 nov. 2005 à 17:30
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....