Recherce dans la soruce d'une page [Résolu]

Signaler
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005
-
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005
-
Bonjour,
J'aimerai refaire un programme que j'avais fais il y a longtemps.
En fait le problème dl une page internet et il faut qu'il regarde dans la source de celle ci et qu'il recherche le texte suivant : "/open.file?id=XXXXXX"
XXXXXX varie et il faut justement que le programme soit capable de me donner ce numero.

Est ce que vous pourriez m'aider svp car le premier code que j'ai fait il y a longtemps est très lourd pour effectuer cette recherche.

Merci

10 réponses

Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

heu ce n'est pas "En fait le problème dl " mais "En fait le programme dl " :D
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

tu repères par ( s, c'est ton texte):
PositionId:= pos('/open.file?id=',s)+14;

s'il y a un signe particulier qui te donne la fin de ton id à trouver tu le repères aussi par pospos par exemple tu peux repérer un retour de ligne

d'où (TonId est un string) :

longueur =la position_de_ton_caractère_de_fin - PositionId

TonId:=copy(s,PositionId,longueur);


tu fais inttostr(TonId) pour convertir en integer

DrJerome
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

pendant que j'y suis, est-ce que quelque'un aurai une source pour récupérer la source d"une page web dans une variable a l'aide d'un THttpCli ?
merci
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

DRJEROME :
Merci ta méthode marche super :) par contre il y a un problème :
dans une page web il y a plusieurs code XXXXXX que je souhaite retrouver, avec
PositionId:=pos('/open.file?id=',s)+14;
Id:=copy(s,PositionId,6);
comment puis-je faire si il y a plusieurs "/open.file?id=" dans le code source de la page (s) ? merci
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
azertyloris : pour recuperer une source de page web, rien de plus simple !
1) pose un TActionList (onglet standard)
2) double clic dessus
3) appuis sur ctrl+ins (ou "new stardard action")
4) regarde dans la catégorie "internet" et choisi "TDownloadUrl" puis "ok"
5) clic sur le "DownloadUrl1" qui vient de se creer dans la catégorie "internet" du ActionList
6) rempli les props "URL" et "filename"
7) quand tu veux (clic du bouton ou autre), fais un "DownloadUrl1.execute;"
7 bis) tu remarqueras 3 evenements utiles sur cette action

pour recuperer tous les XXXXX tu peux creer une liste (TStringList) :
MaList := TStringList.create; // dans le FormOnCreate

puis
PositionId:=pos('/open.file?id=',s)+14;
Id:=copy(s,PositionId,6);
MaList.Add(Id);


tu auras tous les "Id" dans cette liste, tu les exploites comme ceci :
UneString := MaList.String[2]; // recup le 3ème XXXXX


ne pas oublier de liberer la memoire de cette list :
MaList.Free; // dans le FormOnClose ou OnDestroy


voila ! bon codage :)

N'oubliez pas de cliquer sur Réponse acceptée lorsque cette réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : Freeware et Opensource Delphi !
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

JulioDelphi :
Quand je dl l'URL comme tu dis il y a une ereur : erreur de téléchargement de l'url http://xxxxx/
j'ai trouvé une autre maniere d'avoir le code source de la page mais avec ton code :

MaList := TStringList.create;

PositionId:=pos('/open.file?id=',s)+14;
Id:=copy(s,PositionId,6);
MaList.Add(Id);

je n'arrive qu'a récupérer le 1er ID seulement, est-ce qu'il faut mettre une boucle quelque part ?
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

J'ai trouvé un code mais l'inconvénient c'est qu'il utilise un Delete :

Position:=pos('/open.file?id=',source);

while (Position <> 0) do
begin
List.Add(copy(source,Position+14,6));
Delete(source,Position,14);
Position:=pos('/open.file?id=',source);
end;

for i:=0 to List.Count-1 do
memo2.Lines.add(List.Strings[i]);

sinon il marche super :)
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
L'erreur de DL vient de toi qui a mal rempli l'url ou le nom de fichier. car meme une 404 sera téléchargée. j'ai testé le code avant de le soumettre ici et je suis parvenu a choper la page, au fait, evite de mettre "http://www.machin.com/" mais mets plutot "http://www.machin.com/index.php"

oui il faut une boucle, une boucle qui boucle sur chaque ligne pour trouver les XXXXXX.

N'oubliez pas de cliquer sur Réponse acceptée lorsque cette réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : Freeware et Opensource Delphi !
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

merci a vous tous,
a valval : merci mais le code XXX que je veux n'est pas situé dans l'adresse mais dans le code source de la page.
Messages postés
19
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 décembre 2005

oui il faut une boucle, une boucle qui boucle sur chaque ligne pour trouver les XXXXXX.
comme ceci ? (code non tester)

MaList := TStringList.create;

for i:=0 to s.count-1 do
begin
PositionId:=pos('/open.file?id=',s[i])+14;
Id:=copy(s[i],PositionId,6);
MaList.Add(Id);
end;

pour la page web j'ai mis quelque chose du genre "http://www.machin.com/index.php?x=y&a=b" je ne sais pas si ca vien de ca