Bonjour à tous,

Je souhaite récupèrer des données d'un site et que les mettres dans ma base de donnée.
Voici mon code :

<?php
include_once('simple_html_dom.php'); 
    $html = new simple_html_dom();

    $html->load_file('https://www.soccerstats.com/trends.asp?league=france');

    $equipe= $html->find('tr.odd td',0)->plaintext;
    $equipe = trim($equipe);
    $gp= $html->find('tr.odd td',1)->plaintext;
    $avg= $html->find('tr.odd td',2)->plaintext;
    $plus_zc= $html->find('tr.odd td',3)->plaintext;
    $plus_uc= $html->find('tr.odd td',4)->plaintext;
    $plus_dc= $html->find('tr.odd td',5)->plaintext;
    $plus_tc= $html->find('tr.odd td',6)->plaintext;
    $plus_qc= $html->find('tr.odd td',7)->plaintext;
    $plus_cc= $html->find('tr.odd td',8)->plaintext;
    $bts= $html->find('tr.odd td',9)->plaintext;
    $cs= $html->find('tr.odd td',10)->plaintext;
    $fts= $html->find('tr.odd td',11)->plaintext;
    $wtn= $html->find('tr.odd td',12)->plaintext;
    $ltn= $html->find('tr.odd td',13)->plaintext;

  $equipe_1= $html->find('tr.odd td',14)->plaintext;
    $gp_1= $html->find('tr.odd td',15)->plaintext;
    $avg_1= $html->find('tr.odd td',16)->plaintext;
    $plus_zc_1= $html->find('tr.odd td',17)->plaintext;
    $plus_uc_1= $html->find('tr.odd td',18)->plaintext;
    $plus_dc_1= $html->find('tr.odd td',19)->plaintext;
    $plus_tc_1= $html->find('tr.odd td',20)->plaintext;
    $plus_qc_1= $html->find('tr.odd td',21)->plaintext;
    $plus_cc_1= $html->find('tr.odd td',22)->plaintext;
    $bts_1= $html->find('tr.odd td',23)->plaintext;
    $cs_1= $html->find('tr.odd td',24)->plaintext;
    $fts_1= $html->find('tr.odd td',25)->plaintext;
    $wtn_1= $html->find('tr.odd td',26)->plaintext;
    $ltn_1= $html->find('tr.odd td',27)->plaintext;

   $bdd = new PDO ('mysql:host=localhost;dbname=test','root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $req = $bdd->prepare('INSERT INTO resultat(equipe, gp, avg, plus_zc, plus_uc, plus_dc, plus_tc, plus_qc, plus_cc, bts, cs, fts, wtn, ltn) VALUES(:equipe, :gp, :avg, :plus_zc, :plus_uc, :plus_dc, :plus_tc, :plus_qc, :plus_cc, :bts, :cs, :fts, :wtn, :ltn)');
    $req->execute(array(
        'equipe' => $equipe,
        'gp' => $gp,
        'avg' => $avg,
        'plus_zc' => $plus_zc,
        'plus_uc' => $plus_uc,
        'plus_dc' => $plus_dc,
        'plus_tc' => $plus_tc,
        'plus_qc' => $plus_qc,
        'plus_cc' => $plus_cc,
        'bts' => $bts,
        'cs' => $cs,
        'fts' => $fts,
        'wtn' => $wtn,
        'ltn' => $ltn
        ));

    $req_1 = $bdd->prepare('INSERT INTO resultat(equipe, gp, avg, plus_zc, plus_uc, plus_dc, plus_tc, plus_qc, plus_cc, bts, cs, fts, wtn, ltn) VALUES(:equipe, :gp, :avg, :plus_zc, :plus_uc, :plus_dc, :plus_tc, :plus_qc, :plus_cc, :bts, :cs, :fts, :wtn, :ltn)');
    $req_1->execute(array(
        'equipe' => $equipe_1,
        'gp' => $gp_1,
        'avg' => $avg_1,
        'plus_zc' => $plus_zc_1,
        'plus_uc' => $plus_uc_1,
        'plus_dc' => $plus_dc_1,
        'plus_tc' => $plus_tc_1,
        'plus_qc' => $plus_qc_1,
        'plus_cc' => $plus_cc_1,
        'bts' => $bts_1,
        'cs' => $cs_1,
        'fts' => $fts_1,
        'wtn' => $wtn_1,
        'ltn' => $ltn_1
        ));

echo 'Les données a bien été ajouté !';
?>

Mon code fonctionne bien mais je voudrais savoir si il y a des possibilités de l'améliorer pour les rendre plus rapide et condenser car la j'ai deux équipes mais sur cette page je veux en récupérer 40.

Merci d'avance si vous avez une idée.

1 réponse


hello,

la première chose avant de pouvoir (vouloir) t'aider est de savoir si tu a l'autorisation du site de faire du scrapping de données ?

quand je regarde les conditions d'utilisation du site il y a ça :

No resale
You agree not to reproduce, duplicate, copy, sell, resell or exploit for any direct or indirect commercial purposes, any portion of the Website, use of the Website, or access to the Website.

pour rappel, ce n'est pas ce que qu'elle chose existe et disponible sur internet qu'il est forcément gratuit.

je me trompe peut-être mais là tu veux juste te faire eune base de données pour pas cher sur le dos d'une équipe qui travaille dur pour offrir un service...

Alors sur Firefox: Reseau
Sur chrome: Network

Regardes si tu as des requetes qui passent un code autre que 200, si oui selectionnes et regardes "reponse"
Sinon fait un dump de load_file, tu as pu récupérer le contenu?

Et dernière chose, comme dit plus haut, l'usage commercial est interdit, si c'est pour un client, tu t'exposes a des problèmes, si c'est pour toi pour apprendre, c'est bon ;)