robot pour valider formulaire et recuperer les resultats

robot pour valider formulaire et recuperer les resultats - PHP - Programmation

Marsh Posté le 03-05-2008 à 18:28:10    

Bonjour,
 
j'aimerai faire en php si c'est possible, un robot qui valide des formulaires avec des infos que je lui donne et ensuite sur la page suivant la validation récupérer des informations.
 
donc à vrai dire je pense que ça doit exister car je sais qu'il y a des robots qui valident en grand nombre des formulaires de participation pour concours par exemple.
moi j'en aurai besoin pour un site de vente pour récupérer des prix nottament.
 
donc je voulais savoir si php faisait ça sans trop de difficulté alors faut un autre langage ?
si quelqu'un peut m'orienter sur un tuto ou me donner des éléments de base déjà
 
merci  :)

Reply

Marsh Posté le 03-05-2008 à 18:28:10   

Reply

Marsh Posté le 03-05-2008 à 18:40:51    

Tu n'aurais pas plus vite fait d'interroger directement la DB, ou passer par une API / un webservice?
 
A moins qu'il ne s'agisse de piquer des données en douce...
 
Rien de bien difficile en PHP mais ça serait peut-être encore plus simple avec wget, ou encore avec Selenium IDE à coups de scripts (Perl, ...) pour générer des scénarios.
 
Grosso modo, l'idée est pour ton script d'agir comme un navigateur (un user agent plus précisément). Reste à voir comment la page / le form se présente. Dans le meilleur des cas, ça passe avec un GET de toutes pièces. Parfois, il faut récupérer un token (caché), ou avoir une session, ou même se présenter comme un navigateur, selon le site.
 
cURL pour PHP, mais ça devient vite barbare.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-05-2008 à 19:04:10    

salut,
 
merci de ta réponse, je te cache pas que j'ai pas capté tous les termes techniques  :D  nottament api/webservice, je pense que quand tu dis api tu penses à un truc dans le genre google maps
 
wget, je connais ça pour l'administration de serveur, donc faudrait passer par du cgi ou autre ? ça se gere pas en php je crois
Selenium IDE connais pas non plus.
 
ok pour curl en php
 
en fait mon idée, pour tout te dire, c'est récupérer les prix sur un site de compagnie aerienne, donc c'est pour ça que j'ai besoin de valider un formulaire pour ensuite récupérer les prix mais c'est surement infaisaible dans la pratique ou très très dur. je devrais peut etre tenter de les contacter, car j'ai pas l'impression qu'il existe de flux xml mais peut etre permettent'ils un acces direct à la base ou autre ?

Reply

Marsh Posté le 03-05-2008 à 19:04:27    

reproduire une page qui a une action sur une autre page distante est possible mais le probleme va etre pour recupere les donneés car l'action sera pas sur ta page donc ca risque de pose un soucis.
 
Le plus simple etant de fare valider deux fois le formulaire une fois pour toi et une autre fois (autre page) pour l'envoyer du style faire une page formulaire l'envoyer et faire une sorte de verification envoie.
 
Ca marcherai et ca serait 10 fois plus simple et moins prise de tete je pense :d


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 03-05-2008 à 19:54:34    

gosty is back a écrit :

je te cache pas que j'ai pas capté tous les termes techniques  :D  nottament api/webservice, je pense que quand tu dis api tu penses à un truc dans le genre google maps


Un petit coup de Google / de Wikipedia et ce sera plus clair.
 

gosty is back a écrit :

wget, je connais ça pour l'administration de serveur


Ah heuuuu... oui, pq pas.
 

gosty is back a écrit :

donc faudrait passer par du cgi ou autre ? ça se gere pas en php je crois


Heu beh wget, c'est wget.
 

gosty is back a écrit :

Selenium IDE connais pas non plus.


Google, recherche, toussa
 

gosty is back a écrit :

en fait mon idée, pour tout te dire, c'est récupérer les prix sur un site de compagnie aerienne, donc c'est pour ça que j'ai besoin de valider un formulaire pour ensuite récupérer les prix mais c'est surement infaisaible dans la pratique ou très très dur. je devrais peut etre tenter de les contacter, car j'ai pas l'impression qu'il existe de flux xml mais peut etre permettent'ils un acces direct à la base ou autre ?


Mais ce sont des partenaires commerciaux ou bien c'est du piquage en douce?
 
Dans le premier cas, tu peux rêver pour un accès direct DB, par contre un accès webservice ou un bête xml semble de bon aloi.
 

ionik a écrit :

Le plus simple etant de fare valider deux fois le formulaire une fois pour toi et une autre fois (autre page) pour l'envoyer du style faire une page formulaire l'envoyer et faire une sorte de verification envoie.


Rien compris, mais de toute façon ce n'est pas vraiment sorcier. Parfois un peu pénible ceci dit (si SSL, tokens, session, cookies, user agent connu à simuler).
 
Vala


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-05-2008 à 00:59:09    

Sujet très interessant.  
Tu utilises wget pour l'administration, je ne sais pas si tu as fait un tour dans le man wget. Vas y si tu ne l'as pas fait. C'est incroyable le nombre d'option possible....
 
Avec wget, tu verras les options pour changer le user-agent, passer des valeurs en POST ou en GET et meme utiliser un cookies.  
Si tu peux, je te conseille de faire ton petit script bash et de lancer ton script a partir de ton php grace à la commande exec (mais encore faut il que tu es les permissions pour le faire)
 
Sinon tu as curl, qui est semblable à wget qui existe en bash mais aussi en php ...

Reply

Marsh Posté le 06-05-2008 à 19:13:01    

merci à vous pour les réponses.
 
je vais me pencher du coté de selenium et wget (jamais regardé le man non) qui ont l'air assez sympathiques, enfin en tout cas plus "stable" que le curl de php.
 
pour weed, oui je suis sur un dédié donc je pense avoir le droit de faire ça.
 
comme vous m'avez l'air calé, j'en profite pour vous poser ma derniere question, donc admettons que j'ai réussi à remplir le formulaire, j'arrive ensuite sur une page de résultats de ce type :
 
http://agence.voyages-sncf.com/pub [...] nd=&load=1
 
et là je veux récupérer les tarifs, horaires,... et donc je me demande quelle est la meilleure technique pour chopper ces infos pour que je les enregistre dans ma base.
je connais un peu le parsing en php par exemple, mais au moindre changement de la structure de la page je me retrouve coincé et puis ça m'a l'air un peu lourd comme technique.
donc si vous connaissez la meilleure technique pour récuperer les infos, je suis preneur.
 
merci beaucoup d'avance !

Reply

Marsh Posté le 06-05-2008 à 23:59:21    

:whistle:
 
Pardon :o
 
Si je puis me permettre de faire l'avocat du diable, VSC passe des accords en temps qu'agence de voyage avec des partenaire pour le compte desquels elle vend des prestations.
 
Si c'est pour piquer ce partenariat sans aucune garantie que le même tarif pourra être tenu...
Si c'est pour dire "moi je fais moins cher" je crois moyennement à la réalité.
 
Tu vois bien les limites techniques que tu as même si je vais être le premier a t'avouer que tout le monde ne crois pas une seule seconde que tu sais de quoi tu parles ;)
 
Conclusion, ne jamais dire jamais, ne jamais s'avouer vaincu, mais être honnête (avec les autres et soi même ) ;)
 
Si c'est pour un comparateur de prix, je pense qu'il en existe déjà trop...

Reply

Marsh Posté le 07-05-2008 à 00:21:27    

pour repondre à ta question, comme tu peux pas interoger la base de donnée ou récupérer un flux xml avec les tarifs, tu es obligé de les recupérer via la page web en la parsant....

Reply

Marsh Posté le 07-05-2008 à 11:37:10    

sinon y'a la lib SimpleTest (pour faire des test unitaires et d'intégration en PHP) qui permet de simuler des actions d'un utilisateur sur son navigateur web.
http://www.lastcraft.com/form_test [...] tation.php
 
Avec ça, j'ai pu tester qu'une appli web que j'avais développée fonctionnait bien (faire défiler les pages d'un tableau paginé, formulaire de recherche et vérification du résultat retourné...).
Ca vaut le coup d'oeil ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 07-05-2008 à 11:37:10   

Reply

Marsh Posté le 07-05-2008 à 15:51:06    

gosty is back a écrit :

Bonjour,
 
j'aimerai faire en php si c'est possible, un robot qui valide des formulaires avec des infos que je lui donne et ensuite sur la page suivant la validation récupérer des informations.
 
donc à vrai dire je pense que ça doit exister car je sais qu'il y a des robots qui valident en grand nombre des formulaires de participation pour concours par exemple.
moi j'en aurai besoin pour un site de vente pour récupérer des prix nottament.
 
donc je voulais savoir si php faisait ça sans trop de difficulté alors faut un autre langage ?
si quelqu'un peut m'orienter sur un tuto ou me donner des éléments de base déjà
 
merci  :)

Utilises perl avec le module Robotize.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-05-2008 à 19:27:42    

Bonsoir,
 
pour leflos5, je comprends pas trop tout ce que tu veux me dire mais je peux te dire que j'ai pris l'exemple de la sncf car c'est le 1er qui m'a traversé l'esprit et que les variables sont passés dans l'url, c'est plus facile pour prendre un exemple, après il ne s'agit pas de ce site là.
 
merci gilou et rufo pour les deux nouveaux exemples, je vais allez regarder ça.
 
concernant le parsing, php ça convient bien ou y a quelque chose de mieux ?
 
merci  :)

Reply

Marsh Posté le 07-05-2008 à 20:00:33    

et donc quel est l'url de la page que tu souhaite parser  :whistle:  
 
sinon, je ne sais pas s'il y a mieux mais sinon regarde au dessus de ta tete, de ton poste c'est peut etre mieux en effet que php ...

Reply

Marsh Posté le 07-05-2008 à 23:45:03    

Euh, c'est pas Robotize, mais Mechanize, le module perl adapté a ce que tu veux faire. J'avais mélangé dans ma tete, le nom du module avec la notion de robot web.
La doc est ici: http://search.cpan.org/~petdance/W [...] chanize.pm
A+,

Message cité 2 fois
Message édité par gilou le 07-05-2008 à 23:45:16

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 08-05-2008 à 13:02:17    

gilou a écrit :

Euh, c'est pas Robotize, mais Mechanize, le module perl adapté a ce que tu veux faire. J'avais mélangé dans ma tete, le nom du module avec la notion de robot web.
La doc est ici: http://search.cpan.org/~petdance/W [...] chanize.pm
A+,


Oué mais c'est pas un outil de test, donc tu te tapes toute la partie testing à la main, là il faut voir Twill et Selenium (déjà cité, précisément Selenium RC avec Selenium IDE pour facilement créer les tests) qui sont précisément faits pour ce genre de cas (Selenium est plutôt pour les webapps complexes avec du JS toussa, donc là Twill serait peut-être plus adapté)

Message cité 1 fois
Message édité par masklinn le 08-05-2008 à 13:03:19

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 08-05-2008 à 13:03:16    

gilou a écrit :

Euh, c'est pas Robotize, mais Mechanize, le module perl adapté a ce que tu veux faire. J'avais mélangé dans ma tete, le nom du module avec la notion de robot web.
La doc est ici: http://search.cpan.org/~petdance/W [...] chanize.pm
A+,


mais mais mais... il est où le temps où tu répondais à toutes les questions par le titre d'un livre ? :p
 
(oui je viens de faire un tour sur blabla :o )
 

Spoiler :

:lol:


---------------
oui oui
Reply

Marsh Posté le 08-05-2008 à 15:13:00    

masklinn a écrit :


Oué mais c'est pas un outil de test, donc tu te tapes toute la partie testing à la main, là il faut voir Twill et Selenium (déjà cité, précisément Selenium RC avec Selenium IDE pour facilement créer les tests) qui sont précisément faits pour ce genre de cas (Selenium est plutôt pour les webapps complexes avec du JS toussa, donc là Twill serait peut-être plus adapté)

Si tu veux recuperer certains contenus de pages html qui viennent en réponse a des envois de forms remplis, pour reutilisation, Mechanize et des expressions regulieres a la perl, c'est parfait :p
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-05-2008 à 22:40:18    

en tout cas je vous remercie tous pour vos réponses :jap:
je vais etudier ça prochainement détail.

Reply

Marsh Posté le 15-06-2008 à 14:55:30    

me revoila !
 
alors j'ai décidé d'essayer les différentes techniques et donc je commence par curl, sauf que ça marche pas.
 
là j'ai une requete xml à envoyer en post sur un flux xml, j'ai fais le code suivant :
 

Code :
  1. <?PHP
  2. $requete_xml = '<?xml version="1.0" encoding="UTF-8"?>
  3. <REQUETE>
  4. <DEMANDE_
  5. requete...
  6. </REQUETE>';
  7. $post_data = urlencode($requete_xml);
  8. $url = "http://91...";
  9. //-----o initialize curl handle
  10. $ch = curl_init();
  11. //-----o L'URL à récupérer
  12. curl_setopt($ch, CURLOPT_URL,$url);
  13. curl_setopt($ch, CURLOPT_POST, TRUE );
  14. //-----o Le fichier où sera écrit le transfert.  
  15. $fp = fopen("fichier_recepteur.xml", "w" );
  16. curl_setopt($ch, CURLOPT_FILE, $fp);
  17. //-----o requête à passer en params
  18. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  19. $ret=curl_exec($ch);
  20. if (!$ret)
  21. { echo curl_error($ch); }
  22. curl_close($ch);
  23. fclose($fp);
  24. ?>


 
et donc quand je vais sur la page php en question, la page commence à se charger mais c'est très très lent et au final quand la page à finit de se charger mon fichier xml qui est censé recevoir la réponse est vide !
pourtant ma requete xml fait que 10 lignes et la réponse devrait etre rapide.
donc je vois pas trop d'ou ça peut venir, si c'est le code, le serveur distant, la requete, ...
 
si quelqu'un voit, merci beaucoup  :)  
 
je précise que c'est sur php5

Reply

Marsh Posté le 17-06-2008 à 12:11:01    

personne pour mon petit probleme ?
 
je précise que j'ai aussi essayé en enlevant le code pour mettre la réponse dans un fichier pour afficher directement le résultat et ça change rien.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed