Récupération des balises div
J'ai une liste de 1000 pages web , er j'aimerais récupérer le contenu de certaines balises div dont je connais l'id pour ensuite l'afficher sur la page .
Quelle est la meilleur méthode ??
Merci d'avance
Configuration: Windows XP Internet Explorer 6.0
26 réponses
Récupération du contenu de balises div identifiables par leur id sur 1000 pages web et affichage consolidé sur une page, afin d'extraire les données pertinentes et de les présenter de manière uniforme. Par ordre de pertinence, l'approche principale consiste à lire les pages avec file_get_contents et à utiliser preg_match pour capturer le contenu du div par son id. D'autres évoquent l'AJAX pour agréger le contenu côté client ou l'utilisation d'une base de données pour stocker et réutiliser les informations, plutôt que de traiter directement en PHP. En pratique, le volume et la charge peuvent nécessiter une architecture serveur et des traitements par lots, avec stockage en base et planification des requêtes pour limiter les performances réseau.
-
Salut , j'ai essayé
"#NAME=\"designation2\".*>(.*)</textarea>#U
ca ne fonctionne pas :s -
Merci beaucoup ;)
A charge de revanche concernant le marketing direct ;) -
le masque peut être
"#NAME=\"designation2\".*>(.*)</textarea>#U"
-
<TEXTAREA style="position: absolute ;display:none;" id="designation2" NAME="designation2" COLS=20 ROWS=6 >Hauteur : 1.19 m, largeur : 1 m, produit répondant à la norme NFP 90306.</TEXTAREA>
Je veux récuperer le texte entre les balises textarea ;)
J'ai essayer tout le week end ; j'ai évoluer et il n'y a que sur ca que je bloque -
je ne comprend pas ce que tu veux faire apprend à t'en servir ce sera mieux
-
UP
-
Lorsque je récupére un chemin de type /images/3.jpg
Que dois je mettre a la place de : ([0-9\.]*)
j'ai essayé de cherche sur le manuel mais aucun ne marche
Autre question : Ceux qu'on veut récupérer doit t'il obligatoirement venir d'une balise div ?? car j'aimerais récupérer ceux qu'il y a entre ce textarea :
<TEXTAREA style="position: absolute ;display:none;" id="designation2" NAME="designation2" COLS=20 ROWS=6 >Hauteur : 1.19 m, largeur : 1 m, produit répondant à la norme NFP 90306.</TEXTAREA>
merci beaucoup Atropa -
ok enfait si je comprend bien tu veux faire un comparateur de prix sur des sites distants sans avoir accés à leur code php?
et tu veux automatiser le référencement des valeurs en donnant à ton script uniquement l'adresse de la page?
si c'est bien ça ça risque d'être difficile à faire parce qu'il faut qu'il y est un identifiant sur chaque détail de produit et que cette identifiant ne contienne que ça après il faut que ton script reconnaissent l'url et que tu puisse ouvrir la page en php... -
Dans ma base ce sont les liens sur lequele je dois récupérer les infos , ce ne sont pas les produits
-
ca va chercher dans la base de donnée toutes les données de la table produit
ca construit ensuite un tableau sous la forme
$produits = array(
'mon produit' => array(
'prix' => 50,
'tva' => 19.6,
'ref' => 'edfg15578dfg'
),
'mon produit2' => array(
'prix' => 15,
'tva' => 19.6,
'ref' => 'df4d8frd4f8g5f'
)
etc.
);
ça transforme ce tableau en chaine de caractère grâce à serialize()
et ça le stock dans un fichier
le second script va rechercher ce fichier
lit la chaine de caractère et reconstitue le tableaux... -
Peut tu m'expliquer rapidement les différentes actions qu'effectue ceci : (merci beaucoup)
<?php
$pathFile = './monchier.cequejeveux'
$produits = array();
$data = mysql_query("SELECT * INTO produits");
while($p = mysql_fetch_array($data)) {
$produits[$p['nom']]['tva'] = $p['tva'];
$produits[$p['nom']]['prix'] = $p['prix'];
$produits[$p['nom']]['ref'] = $p['ref'];
// etc.
}
file_put_contents($pathFile,serialize($produits),LOCK_EX);
?>
et un truc du genre à l'arrivé :
<?php
$adrFile = 'http://www.monsite.fr/adresse/monfichier.cequejeveux';
$produits = unserialize(file_get_contents($adrFile));
//$produits contient le tableaux laissé sur l'autre site...
?> -
oui par exemple regarde les liens que je t'ai mis il y a la documentation dedans et comment construire des masques
-
Merci , ca à l'air de marcher !!!
Mais pour les chaine de caractéres on remplace les 0 9 par "a" et "z" ?? -
TEST
-
par contre ce n'est à mon avis pas la meilleure solution à ton problème !
le mieux serait un truc du genre sur ton premier site :
<?php $pathFile = './monchier.cequejeveux' $produits = array(); $data = mysql_query("SELECT * INTO produits"); while($p = mysql_fetch_array($data)) { $produits[$p['nom']]['tva'] = $p['tva']; $produits[$p['nom']]['prix'] = $p['prix']; $produits[$p['nom']]['ref'] = $p['ref']; // etc. } file_put_contents($pathFile,serialize($produits),LOCK_EX); ?>
et un truc du genre à l'arrivé :
<?php $adrFile = 'http://www.monsite.fr/adresse/monfichier.cequejeveux'; $produits = unserialize(file_get_contents($adrFile)); //$produits contient le tableaux laissé sur l'autre site... ?>
-
Merci beaucoup ca a l'air de marcher !
Je vais essayer avec tous les sites que j'ai en base -
Je te remerci beaucoup , ca marche !!!
Je vais essayer maintenant de le faire pour les 1000 sites que j'ai en base .
Je te tiens au jus. -
c'est pas facile à utliser au début...
voilà ou tu renseigner sur cette fonction :
https://www.php.net/manual/fr/function.preg-match.php
https://www.php.net/manual/fr/pcre.pattern.php
voilà la doc officiel tu en aura besoin !
et un tutoriel simple pour commencer : https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/916990-les-expressions-regulieres-partie-1-2
ensuite pour ouvrir le fichier pour simplifier fopen etc utilise plutot file_get_contents():
voilà la doc : https://www.php.net/manual/fr/function.file-get-contents.php
donc :<?php $file = file_get_contents('http://www.adressedetonsite.fr'); //ouvre et lis le fichier dans une chaine if(preg_match("#id=\"tva\">([0-9\.]*)</div>#",$file,$tva)) { //recherche l'id tva avec un contenu numérique $tva = $tva[1]; // si tva est trouvé attribut la valeur à la varieble tva } /* pour la regex : l'expression est une chaine de caratère d'où les " les # servent de délimiteur , pour dire ou comment et fini le masque id=\"tva\"> vas rechercher id="tva"> dans le fichier les \ servent à échapper les " ([0-9\.]*) les parenthèse servent à capturer leur "contenu" entre crochet ce sont des classes de caractères 0-9 var rechercher tout les caractère allant de 0 à 9 \. inclu le . dans la classe en l'échappant le * signifie que cette classe peut être 0 ou autant de fois qu'on veut (je m'explique mal) par exemple la classe reconnaitra : (je délimite les valeur par une virgule) 1, 12, 955486.156, ., .125, etc. </div> recherche </div> donc la regex va rechercher dans le fichier id="tva"> suivit d'un nombre qui contient ou non un . suivie de </div> les parenthèse capturante : la variable $tva en argument de la fonction preg_match va recevoir un tableau des valeur capturéabs $tva[0] est la capture du masque complet $tva[1] est la capture de la parti du masque entre la première parenthèse $tva[2] la capture de la seconde les parenthèse sont compter dans l'ordre d'ouverture par exemple : (<= 1 (<=2 )(<=3 ))(<=4) */ ?> -
J'ai enfin réussi a te faire comprendre ! LOL !
Tu n'est pas le premier a me dire d'utiliser pregmatch , mais malgrés les quelques connaisances que je posséde en php , cette fonction est completement inconnue pour moi?
J'ai cherché un peu de tuto sur le net , je trouve rien d'intéressant concernant ce que je recherche
Peut tu m'expliquer un peu plus cela (je t'oblige pas mais ça serait sympa) :
fopen();
$file = fread();
fclose();
preg_match("#id=\"tva\">([0-9\.]*)</div>#",$file,$tva);
echo $tva[1]; //contiendra normalement la tva valeur de la tva
MERCI BEAUCOUP
je reste à ta dispo pour d'éventuel questions biensur ;) -
si tu as accès au premiers site le mieux serait de faire un fichier json ou autre dessus
et d'aller rechercher ce fichier ensuite avec le second
si des deux coté c'est traité en php un simple serialize unserialize suffirait à pouvoir traiter les données
pour le faire uniquement à partir des liens il faut parser le html pour en extraire ensuite les données que tu veux et là c'est autre chose... c'est a prendre en dernier recours ça !
je ne connais pas de moyen simple de parser le xml... mais regarde de ce coté : https://www.php.net/manual/fr/refs.xml.php
ou alors je viens de penser à autre chose mais il faut que tu connaisses précisément la structure de tes div
tu peux peut être faire un truc du genre :fopen(); $file = fread(); fclose(); preg_match("#id=\"tva\">([0-9\.]*)</div>#",$file,$tva); echo $tva[1]; //contiendra normalement la tva valeur de la tva
mais ca reste du bricolage...
- 1
- 2