IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

récuperation de données sur un site externe


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 59
    Points : 36
    Points
    36
    Par défaut récuperation de données sur un site externe
    Bonjour,

    je voudrais savoir si cela était possible de créer en php un bot qui recherche sur google et qui sélectionne des infos pour les afficher , je ne trouve pas énormément de tuto sur cURL j'ai donc commencer par un exemple simple mais sa ne marche pas je ne comprend pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
        $curl = curl_init();
        $fp = fopen("codesource.txt", "w");
        curl_setopt ($curl, CURLOPT_URL, "");
        curl_setopt($curl, CURLOPT_FILE, $fp);
     
        $htmlfichier = file_get_contents('codesource.txt');
           preg_match_all("<table>", $htmlfichier, $out, PREG_PATTERN_ORDER);
            $balise = fopen('balise.txt', "w");
           foreach($out[0] as $element){
               $element = preg_replace("<table>", "", $element);
               $element = preg_replace("</table>", "", $element);
               $element .= "n";
               fputs($balise, $element);
            file_get_contents($balise);
           }
     
     
        curl_exec ($curl);
        curl_close ($curl);
     
     
            ?>
    je voudrais qu'il prenne le code source d'une page donc sa il le fait bien elle s'enregistre dans "codesource.txt" mais ensuite je voudrais enregistrer dans une autre page pour mettre a part ce que contient la balise "table" du code source extrait par exemple

    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise un parser comme DomDocument ou SimpleXML pour analyser le code HTML, pas une expression régulière.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    c'est a dire ? et pourquoi l'expression régulière ne fonctionne pas ? et comment lui dire de sélectionné les balises <table> et </table> dans la boucle ? je suis un peu perdu et je n'ai trouver aucun tuto claire

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    Bon j'ai bien réussi a récupérer les lien avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#'.$regex.'<a href="(.*)">(.*)</a>#si', $result, $matches);
    mais quand je clique sur les url récupérer j'ai "url?q=" ceci avant chaque "http" donc comment faire pour ne pas le prendre en compte ? les url complète ressemble a sa :

    url?q=http://etudiant.aujourdhui.fr/etudiant/metiers/fiche-metier/comptable.html&sa=U&ved=0ahUKEwjzzIPIwvbRAhVBB8AKHYwMB5MQFghGMAg&usg=AFQjCNFO77Aztqffj-X1TvrOf07JLO6cZA

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Salut, j'ai déjà eu à faire la même chose que toi et j'ai utilisé HTMLDomParser que je te conseil : http://simplehtmldom.sourceforge.net/manual.htm
    Il te suffit de repérer dans quel classe sont les liens de ta page de résultats google et de les extraire tous en même temps.
    Après comme il n'y aura pas que les liens mais peut être le titre aussi, là tu peux utiliser les Regex.
    Chaque résultats correspondant à un lien sera stocker automatiquement dans une case du tableau.
    Tu n'auras plus qu'a parcourir tout le tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Find all element which id=foo
    $ret = $html->find('#foo');
     
    // Find all element which class=foo
    $ret = $html->find('.foo');
     
    // Find all element has attribute id
    $ret = $html->find('*[id]'); 
     
    // Find all anchors and images 
    $ret = $html->find('a, img'); 
     
    // Find all anchors and images with the "title" attribute
    $ret = $html->find('a[title], img[title]');
    Si t'as un problème hésite pas, je l'ai déjà fait

Discussions similaires

  1. Insertion automatique de données sur un site web
    Par Bilbo67 dans le forum Access
    Réponses: 5
    Dernier message: 02/02/2007, 14h20
  2. Faciliter la mise à jour des données sur mon site
    Par Pau dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 23/01/2007, 09h47
  3. [VB6]Comment faire pour récuperer des donnée sur un mp3 ou wav ?
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/06/2006, 16h08
  4. Récuperation de données sur un site.
    Par J0r_x dans le forum JBuilder
    Réponses: 3
    Dernier message: 05/05/2006, 07h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo