Page 1 sur 2 12 DernièreDernière
Résultats de 1 à 10 sur 18

Sujet : récupération info sur site internet

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    11

    récupération info sur site internet

    Bonjour

    J\'aimerais créer un script qui irait sur le site de ryanair ( http://www.bookryanair.com/skylights/cgi-bin/skylights.cgi?language=FR&fr=ry ) pour récupérer des informations (le prix surtout) au sujet des vols.

    Par exemple, j\'aimerais connaitre le prix des vols Charleroi-Venise (2 par jour) pour les 2 prochains mois.

    Je suis Vraiment débutant en php , avez-vous des idées.? par où dois-je prendre le problème?
    avez-vous des sites à me conseiller ?

    Merci d\'avance

  2. #2
    Visiteur MP
    Visiteur MP
    rebonjour,

    voila comment je vois le fonctionnement de ton script:

    1 : recuperer la page qui contient les infos sur le site. (si plusieurs pages, trouver un moyen de bien definir la page necessaire)

    2 : chercher dans ce fichier les informations interessantes (donc trouver un moyen d\'identifier avec certitude les infos)

    3 : traiter les infos si besoin (faire des comparaisons entre elles etc...)

    4 : afficher les info (et la comme je te l\'avais di c\'est du HTML, mais tu verra c\'est tres simple).


    Il me semble que la partie la plus dure a mettre en place sera la recherche des informations dans le fichier. en effet pour faire ca, il faut bien etudier le site Ryanair et trouver un moyen d\'identifier les tarifs, et surtout a quoi il correspondent.

    differents moyens ( ca dependra du site que je suis pas encore allé voir, desole) :

    la structure du site defini bien par des identifiant par exemple les tags HTML contenant les prix et les destination. alors il est assez simple de faire une recherche du tag HTML et d\'afficher ce qu\'il contient.

    la structure HTML ne defini pas bien les tag, et du coup il faudra utiliser un moyen de reconnaissance un peu moin precis. par exemple une expression reguliere qui ira chercher une chaine de type \"texte : nombre euros\" si le site presente ces pris de cette maniere.

    pour le moment je m\'arrete la, je vais allé voir un peu le site de ryanair pour voir comment il est.


    pour ce qui est du php, je ne sais que te conseiller pour apprendre. personnellement la seule documentation que j\'utilise est la doc officielle sur www.php.net mais elle sera peut etre un peu dificile d\'acces pour un debutant.
    il faudrait que tu trouve des tutoriaux expliquant la bes de la programmation en php.

    mais etant donné que tu sais deja programmé en C, tu apprendra surrement tres vite le php qui est un language simple.

    ++

  3. #3
    Visiteur MP
    Visiteur MP
    apres un p\'tit coup d\'oeil jeté sur le site..... c\'est pas gagné :roll:


    la page affichant les informations des vols est appelé avec un formulaire transmettant les infos en method \'POST\'

    y a deux methodes pour tansmettre des infos d\'une page a l\'autre, le GET ou le POST. le GET integre les infos dans l\'URL, et donc tu as des URL du genre : http://www.toto.fr/index.php?id=sdfdsfsfsdf&sds=sdfsdfs

    et la methode POST transmet les infos dans le header de la transmission, donc c\'est pas visible pour l\'utilisateur, et donc la c\'est un peu plus embettant pour aller chercher l\'fichier....

    doit bien y avoir un moyen mais moi je sais pas faire, desole.

  4. #4
    Visiteur MP
    Visiteur MP
    Salut,
    Tu peux récupérer le header avec une fonction du style :

    Code:
    <?php
    /**
     * Fonction permettant de se connecter au serveur distant et de renvoyer le header
     **/ 
    function recupererheader($url){
    	$proxyhost=\"XX.XXX.XXX.XX\";
    	$proxyport=XXXX;
    	$fsource = fsockopen($proxyhost, $proxyport,&$errno, &$errstr, 30);
                    $result=\"\";
    	if(!$fsource) {
    	fclose($fsource); 
    	echo \"> $errstr <$errno><br/>\\n\";
    	return FALSE;
    	} 
    	else {
    	fputs($fsource,\"GET http://\".$url.\" HTTP/1.0\\n\\n\");
    	while (!feof($fsource)) {
         		$result =$result.fread($fsource,1024);
       	}
    	fclose($fsource);
    	//Separation des headers du contenu.
    	$headers = substr($result,0,strpos($result,\"\\r\\n\\r\\n\"));
    
    	return $header;
    	}
    return FALSE;
    }
    ?>
    A toi de récupérer les urls en parsant le site en profondeur, puis apres de faire des requetes.

    Mais attention c\'est un travail de longue halène dans lequel tu te lances...
    :wink:

    bon courage,
    ++

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    11
    merci

    quand tu dis un travail de longues haleine, ca sous entend combien de temps? pas 2 mois j\'espère.

    je vais m\'y atteler dès ce soir

    je vous tiendrai aucourant

    @+

  6. #6
    Visiteur MP
    Visiteur MP
    Ben ça dépends ce que tu veux faire...

    En gros il faut que tu récupère le contenu du site, tu peux utiliser la fonction que je t\'ai filé pour le header en changeant la fin :
    Code:
    $contenu = substr($result,strpos($result,\"\\r\\n\\r\\n\")+4);
    return $contenu;
    Apres je pense que ton but est de regarder attentivement le code source, de comprendre comment sont codés ou écrits les éléments que tu recherches. Puis apres il va te falloir parser le contenu en utilisant des REGEX pour récupérer ces infos.

    Un bon site qui pourra t\'aider pour les regex :

    http://www.expreg.com/php.php

    Bonne prog,
    ++

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    11
    rebonjour

    Mon plus gros problème est que la page avec les choix des vols et la page des prix a la même Url

    J\'arrive à prendre le html de la page avec le choix des avions,
    mais je n\'arrive pas à accéder à la page des prix

    j\'ai jeté un oeil (même plus) au source de la page http://www.bookryanair.com/skylights/cgi-bin/skylights.cgi
    et j\'ai trouvé la fonction qui permet de passer la la page suivante (celle reliée au bouton \"search fligh\" t:-) )

    Code:
    function submit_SB_Form()
    {
    	captureDates() //fonction de recherche de date : pas de problème
    //recherche de la ville de départ
    	sector1_o	= document.SBform.sector1_o.options[document.SBform.sector1_o.selectedIndex].value
    //recherche de la ville d\'arrivé	
             sector1_d	= document.SBform.sector1_d.options[document.SBform.sector1_d.selectedIndex].value
    
    	document.SBform.m1.value = \"\" + oYear + oMonth + oDay + sector1_o + sector1_d
    
    	//Vol retour
    	sector2_o = sector1_d
    	sector2_d = sector1_o
    	document.SBform.m2.value = \"\" + rYear + rMonth + rDay + sector2_o + sector2_d
    	document.SBform.nom.value=\"2\"
    
    	setPassengerTypes1()//fonction de recherche du nombre de passagers
    
    //Aucune idée
    	document.SBform.submit()
    }
    }
    Je me doute que c\'est \"document.SBform.submit()\" qui permet de passer à la page des prix en envoyant toutes les informations. Mais il n\'existe pas de fonction \"document.SBform.submit()\"

    une fois que je serais à la page suivante, il me \"suffit\" de chercher les prix et de les afficher, cela ne posera plus trop de problème

    le seul hic pour l\'instant est qu\'il ne veut pas passer à la page suivante

    voila la réponse une fois que je clique sur le bouton relié à cette fonction
    Code:
    Not Found
    The requested URL /skylights.cgi was not found on this server.
    Apache/2.0.49 (Unix) PHP/4.3.7 Server at 127.0.0.1 Port 80
    C\'est normal, je n\'ai pas de page skylights.cgi mais comment changer l\'adresse (url) de l\'envoi?

    Ps: en fait la page ryanair est en javascript. Il me faut donc apprendre html, java et php, ....... dur dur :-)

    J\'espère m\'etre bien exprimé :lol:

    @+

  8. #8
    Visiteur MP
    Visiteur MP
    Salut,

    Mon plus gros problème est que la page avec les choix des vols et la page des prix a la même Url
    ça c\'est tout simplement impossible. il y a une différence mais tu ne la vois pas. regarde comment sont envoyés les champs (methode POST...). La fonction que tu nous donnes ne dois pas tout faire...

    J\'arrive à prendre le html de la page avec le choix des avions, mais je n\'arrive pas à accéder à la page des prix
    Quelle est la différence ?? Simule un vol et regarde le résultat, le nom des variables...

    C\'est normal, je n\'ai pas de page skylights.cgi mais comment changer l\'adresse (url) de l\'envoi?
    Heu je comprends pas l\'intéret là ? C\'est à toi de faire la requete sur l\'url si tu veux faire un parse sur le contenu. Non ?
    Recupère l\'url et place la dans la fonction que je t\'ai donnée.

    Il me faut donc apprendre html, java et php, ....... dur dur :-)
    C\'est certain que si t\'essaye de programmer un truc un peu complexe sans connaitre un minimum le code que tu étudies, c\'est pas gagné.
    Peut etre faudrait-il commencer par quelque chose de plus facile, ou lire qq tutoriaux... :wink:

    ++

  9. #9
    Membre MP
    Inscrit
    août 2013
    Messages
    11
    eut etre faudrait-il commencer par quelque chose de plus facile, ou lire qq tutoriaux...
    je ne fais que ca depui hier :-), je sais c\'est pas assez, on n\'apprend pas un langage en une nuit..............; sauf peut etre mussolini

    Quelle est la différence ?? Simule un vol et regarde le résultat, le nom des variables...
    J\'ai déja regardé la html de la page de choix de vol et de la page des prix. Ce code est totalement différent,


    ça c\'est tout simplement impossible.
    Ben je ne fais que zieuter les 2 url , elles sont exactement les mêmes
    il y a une différence mais tu ne la vois pas.
    je pars m\'acheter des lunettes
    regarde comment sont envoyés les champs (methode POST...). La fonction que tu nous donnes ne dois pas tout faire...
    Voila l\'appel de la fonction dans la page de choix

    Code:
    <input class=\"submit\" type=\"button\"
     value=\"SEARCH FOR FLIGHTS\" onclick=\"submit_SB_Form()\">
    C\'est le seul bouton sur la page, il fait appel à la fonction que j\'ai montré.

    La fonction [-i]captureDates()[/i] n\'apporte rien d\'interressant, elle ne fait que trouver les dates et les placer dans les variables.

    En fait, j\'explique ce que je fais, j\'ai crée une page php qui prend le html de la page http://www.bookryanair.com/skylights/cgi-bin/skylights.cgi?language=FR&fr=ry
    dela, je l\'affiche sur ma page
    j\'ai cré un bouton qui appele la fonction submit_SB_Form()
    par :
    Code:
    <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">
    <tr>
    <td>
    <form action=\"http://www.bookryanair.com/skylights/cgi-bin/skylights.cgi\" method=\"post\">
    	<input  type=submit name=\"Rech\" value=\"Recherche Prix\" onclick=\"submit_SB_Form()\">
    </form>
    </td>
    </tr>
    </table>
    Si je met en commentaire le [-i]document.SBform.submit()[/i] de la fonction [-i]submit_SB_Form()[/i] alors j\'arrive sur la page de choix http://www.bookryanair.com/skylights/cgi-bin/skylights.cgi(c\'est aussi l\'url de la page des prix) et pas sur la page des prix, je me dis donc que c\'est à cause que je n\'ai pas passé les paramètres
    mais si je retire les commentaires sur [-i]document.SBform.submit()[/i] alors il essaye de trouve http://127.0.0.1/skylights.cgi qui n\'existe pas

    a mon avis, et je me trompe surement, il faut passer les paramètres mais comment?

    C\'est à toi de faire la requete sur l\'url si tu veux faire un parse sur le contenu. Non ?

    Recupère l\'url et place la dans la fonction que je t\'ai donnée.
    le problème c\'est justement l\'url , si il était différent ce serait hyper facile, mais non c\'est le même url pour 2 pages

  10. #10
    Visiteur MP
    Visiteur MP
    en effet les pages on le meme URL.

    la diference est que lorsque tu est sur la page de choix et que tu clique sur le bouton, tu recharge la page, mais avec des parametres.

    ces parametres tu ne les vois pas car ils sont envoyé avec la method POST, donc dans le header de la requete.

    Le fichier pointé par l\'URL est un fichier .cgi, et donc c\'est un script qui est executé par le serveur.
    Ce script recupere les parametres que tu a envoyé, et afficher la page necessaire.
    si aucun parametre n\'est passé, tu arrive sur la page de choix.

    c\'est pour cela que si tu utilise juste l\'URL pour allé chercher la page avec ton script php, tu obtiendra toujours la page de choix.

    il faut donc que, avec ton script php, tu fasse une requete contenant les parametres necessaires dans le header.

    pour cela je ne sais pas comment faire, peut etre la fonction de Gexti le permet, je sais pas je l\'ai pas lu, desole.

    t\'inquiete pas, une fois que tu aura reussit a recuperer la bonne page, tu aura fait une bonne partie du travail.

    PS : la fonction Javascript que tu as recuperé sert juste a mettre les informations saisie en forme.
    la methode submit() envois les données.

    donc c\'est utile pour nous uniquement pour savoir le format que doivent prendre les données envoyé lors de la requete.

Page 1 sur 2 12 DernièreDernière

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé