Bonjour, je suis un developpeur d'application site php. Mon sujet consiste à recupérer les données sur le site (https://www.agriconomie.com/assortiment-de-goupilles-beta-double-spire/p210645) (ceci est une seule page, il en existe plusieurs) existant et les afficher. J'ai commencé et je suis actuellement bloqué. J'ai récupéré les valeurs voulues (nom de l'article, le prix ainsi que les autres valeurs situées en bas de l'image d'articles ) dans 3 tableaux différents à l'aide la fonction filegetcontent, pregmatch de php. Il me reste de les afficher dans un tableau à 2 dimenssions. Le tableau aura dans la premiere ligne le nom d'article et le prix. le reste des lignes va contenir les intitulés suivis des valeurs qui se trouvent en bas de l'image d'articles . Voilà mon code php

<?php
$debut="https://www.agriconomie.com";
$txt = file_get_contents('https://www.agriconomie.com/pieces-agricoles/tracteur/attelage---relevage/pc2902'); /ici c'est pour Lire la page html/

$results = array();
// $test = preg_match_all('#<a href="(.*?)">#', $txt, $names_array);

$test = preg_match_all('#<a href="(.+)" class="(.+)" title="(.+)"#', $txt, $names_array);

/*recupéré les liens du site  en particuliers le text qui se situe entre griffe "" du href*/

for($i = 0; $i < count($names_array[1]); $i++) 
    {
        $j=$i;

        $debut="https://www.agriconomie.com".$names_array[1][$i]; 

        $adresse =$debut;

         /* echo $adresse ; ?>   <br /> <?php */

            $page = file_get_contents ($adresse);

         /* preg_match_all ('#<h3 class="product-name">(.+)</h3>#', $page, $names_array5); */                      
            preg_match_all ('#(<dd>(.+)</dd>)#', $page, $names_array2); 
            preg_match_all ('#<span><i class="icon-chevron-right"></i>(.*?)</span>#', $page, $names_array3); 
            preg_match_all ('#<p class="price" itemprop="price" content="(.*?)">#', $page, $names_array4);

echo "<center>";

echo "<table class='table table-bordered table-striped table-condensed'>";

/*
for($j = 0; $j < count($names_array5[1]); $j++)
{
$NOM = $names_array5[1][$j];

                      echo  'Nom ='.$NOM ; 

                }   */ 

 for($j = 0; $j < count($names_array4[1]); $j++)  
                {
                    $price   =  $names_array4[1][$j]; 

                      echo     'Prix ='.$price.'$' ; 

                } 

for($i = 0; $i < count($names_array3[1]); $i++)

{
     for($j= 0; $j < count($names_array2[1]); $j++){

          $descriptif   =  $names_array2[1][$i];   

                                                    }

    $intitule   =  $names_array3[1][$i]; 

echo "<tr><td>".$intitule." </td>  <td> ".$descriptif." </td> </tr> ";

            } 

    }

echo "</table>";

echo "</center>";

?>

S'il vous plait aidez moi.

16 réponses


Lartak
Réponse acceptée

Bonjour.
Pour commencer, je ne comprends pas trop dans quel but tu souhaites récupérer des données du site susnommé et les utiliser sur ton site.
Ensuite, ce que tu veux faire, est strictement interdit par leur CGU :

7.3. Sont expressément interdits, toute reproduction, représentation, adaptation, exploitation, distribution, diffusion, utilisation commerciale, traduction, arrangement, transformation ou toute création d’œuvres dérivées ou composites de tout ou partie des œuvres et contenus ou tout autre élément ou information figurant sur le Site Internet sur quelque support que ce soit et par tout procédé que ce soit, actuel ou futur. Ces agissements sont susceptibles de constituer des actes de contrefaçon sanctionnés pénalement et civilement, engageant la responsabilité de leur auteur.

Source: Conditions générales d’utilisation du site internet www.agriconomie.com » 7. PROPRIETE INTELLECTUELLE

En règle générale, si un site ne propose pas une API pour récupérer et utiliser des données du site, tu n'as pas le droit d'utiliser de leurs données et les afficher sur ton site, tout du moins pas de la manière que tu veux le faire toi en scannant leurs pages.

SLK
Réponse acceptée

Ça me fait penser à un truc comme ça :

<?php
$length = count($tab1);

for ($i = 0; $i < $length; $i++)
{
    echo 'tab_1[' . $i . '] : ' . $tab1[$i] . '<br>';
    echo 'tab_2[' . $i . '] : ' . $tab2[$i] . '<br>';
    echo 'tab_3[' . $i . '] : ' . $tab3[$i] . '<br>';
    echo 'tab_4[' . $i . '] : ' . $tab4[$i] . '<br><br>';
}
?>

Du coup, j'imagine que j'ai mal compris.

Pourtant, Google fait ça tous les jours :D
a++

Pourtant, Google fait ça tous les jours :D

Non, Tu fais fausse route, Google se réfère généralement aux metas dans le head.
Ce qu'il veux faire lui est totalement différent, évites donc des comparaisons totalement hors-sujet.

Comment diable font-ils ? Comment les moteurs de recherche parviennent-ils à répondre à nos requêtes avec tant de rapidité et de précision ?

fonctionnement de Google
Le premier rouage de ces formidables mécaniques est le robot, appelé aussi "bot" ou "spider". Il s'agit d'un programme qui parcourt sans arrêt le web pour alimenter et mettre à jour une base de données qui contiendra :

  • l'adresse de chaque page trouvée
  • le contenu de cette page (titre, texte, balises meta, noms des images, textes des images, etc.)
  • la liste des liens allant de cette page vers d'autres pages
    Indexation :
    Chacune des pages explorées est traitée afin de compiler un index volumineux répertoriant tous les mots rencontrés ainsi que leur emplacement sur chaque page. Nous traitons également les informations incluses dans les balises de contenu et les attributs clés, notamment les balises "Title" et les attributs alt.

moi, j'dis ça, j'dis rien ;)

@pluche
Pierre

Il continue en plus.

Google se sert de ces données pour aiguiller l'utilisateur vers le site qu'il recherche. (bien)
web soycain récupère les données d'un site, pour les afficher sur son site, c'est du plagia. (pas bien)

Après, on ne sait pas,
peut-être que web soycain travail en partenariat avec ce site. (du coup, pas pas bien)

moi, j'dis ça, j'dis rien ;)

@pluche

Ouais...

Je repose ma question autrement: Je veux parcourir 4 tableaux indexés ,de meme taille contenant tous des valeurs, et afficher les valeurs alternativement.

Merci de m'avoir repondu, mais en fait ce n'est pas ça que je veux

Du coup, j'imagine que j'ai mal compris.

Merci de m'avoir repondu, mais en fait ce n'est pas ça que je veux

Qu'est-ce que tu veux ?

@Pierrot01: Tu donnes la nette impression d'être le genre de personne à se dire :

Lui il est connu et il le fait sans avoir de problème, alors pourquoi je ne pourrais pas le faire moi ?

Sauf que comme l'a explicitement indiqué SLK, les deux situations sont totalement différentes.
@web socain: Le code que SLK montre n'est qu'un exemple, et je pense que dans la finalité c'est ce que tu veux grosso modo.
Donc à toi de formater son exemple avec tes tableaux en HTML ou autre.
Si tu nous disais que tu voulais créer un tableau ou un objet avec les données récupérées dans ta boucle, ce serait différent, mais dans l'état actuel, tu nous montres des echo dans ta boucle, donc ce que montre SLK est plus ou moins ce que tu veux au final.
Si ce n'est pas le cas, soit plus explicite dans ce que tu souhaites obtenir au final.

@Lartak , jugement hatif ;)

@web soycain: Après rien ne t'empêche de les contacter et de leur demander tout simplement leur accord pour l'utilisateur de contenu.
Vous pourriez très bien conclure une entente en l'échange d'un lien de leur site sur ton site par exemple !

Sinon il me semble que la propriété intellectuelle n'est engagée que si elle permet de tirer un avantage financier ou une reconnaissance.
Mais bon pour être sur, le mieux étant de s'adresser directement à l'auteur.

A part ça, y'a aucune api / resource gratuite à ce sujet (matériel agricole) ?

Merci pour vos interventions, pour être plus claire , je travaille en collaborations avec les éditeurs de sites et je suis charger d'écrire un programme pour receuillir des infos sur ce site Agriconomie. LE BLOCUS SE RESUME COMME CECI:
Mon sujet consiste à parcourir 3 ou 4 tableau indexé simultanement et d'affiché leurs valeurs alternativement.Après plusieurs heures je me suis tourner vers vous, pas forcement de chercher à corriger mon code mais de pouvoir ,à partir de 2 arrays de php indexés différents de même taille, afficher les valeurs de ces 2 arrays de facon alternatifs dans un tableau HTML

Merci à tous . Je pense modifier le code fournit par SLK, avec ca j'ai un resultat mais dupliquer donc je vais travailler dessus pour obenir mon resultat. Mais SLK pouvait m'expliquer un peux son bout de code cela me fera plaisir. MERCI A TOUS. A bientôt pour un autre sujet

Mais SLK pouvait m'expliquer un peux son bout de code cela me fera plaisir

Oui bien sur :

/* Comme les 4 tableaux ont la même taille,
   on va calculer la taille d'un seul tableau ("$tab1" par exemple).
   "count()", si elle est appliquée à un tableau, donne le nombre d'éléments du tableau
*/
$length = count($tab1);

for ($i = 0; $i < $length; $i++) // Pour chaque indice ...
{
    // ... pour chacun des 4 tableaux, on affiche l'indice et la valeur associée
    echo 'tab_1[' . $i . '] : ' . $tab1[$i] . '<br>';
    echo 'tab_2[' . $i . '] : ' . $tab2[$i] . '<br>';
    echo 'tab_3[' . $i . '] : ' . $tab3[$i] . '<br>';
    echo 'tab_4[' . $i . '] : ' . $tab4[$i] . '<br><br>';
}

J'ai un peu de mal à écrire des commentaires pertinents...
Si tu coinces toujours, n'hésites pas à dire où ça coince.

Pour "voir" un peu mieux,
rempli les 4 tableaux à la main.
Tu leur met chacun 3 valeurs différentes, et tu exécute le script pour voir ce que ça donne.

C 'est déjà bon, Merci encore.