Recherce dans la soruce d'une page

Résolu
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005 - 1 janv. 2005 à 19:23
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005 - 2 janv. 2005 à 14:46
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

azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
1 janv. 2005 à 19:26
heu ce n'est pas "En fait le problème dl " mais "En fait le programme dl " :D
3
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
1 janv. 2005 à 20:21
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
3
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
1 janv. 2005 à 20:42
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
3
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
1 janv. 2005 à 21:09
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
2 janv. 2005 à 00:39
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 !
3
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
2 janv. 2005 à 11:08
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 ?
3
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
2 janv. 2005 à 11:34
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 :)
3
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
2 janv. 2005 à 14:41
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 !
3
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
1 janv. 2005 à 20:39
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.
0
azertyloris Messages postés 19 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 décembre 2005
2 janv. 2005 à 14:46
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
0
Rejoignez-nous