Aller au contenu

Récuperer qu'une partie d'une page avec CURL


Sujets conseillés

Posté

Bonjour à tous,

J'ai trouvé pas mal de tuto sur le net pour récupérer le contenu d'une page PHP par CURL sur le net mais aucun ne précise comment ne récupérer qu'une partie d'une page.

J'aimerais donc savoir comment, par exemple, ne recupérer que le texte contenu dans une div situé dans <body> par exemple en faisant abstraction de tout le reste.

Merci de votre aide

Posté

Tu récupère la page complètement avec curl, puis sur le résultat tu utilises une expression régulière

Posté

Salut,

Pour être précis, tu ne récupérera que le contenu HTML de ta page. Ensuite tu peux utiliser les fonctions PHP de recherche sur les chaines de caractères pour retrouver tes petits et isoler la partie qui t'intéresse.

Posté

Ok donc pas de récupération partielle!

Je vais donc devoir insérer les données dans une bdd puis les traiter ensuite pour extraire ce que je veux.

J'utilise donc pour afficher le contenu :

if (!extension_loaded('curl')) {
die("L'extension CURL n'est pas disponible");
}

function fetch($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, FALSE);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}

echo fetch('http://www.monurl.com');

Pour l'insertion, je n'arrive pas à insérer mon contenu :

 $r="INSERT INTO html_content (champ1,html) VALUES(1,' $response ')";
return mysql_query($r);

J'ai bien une entrée mais la partie 'html' est vide.

Auriez-vous une idée SVP?

Posté (modifié)

Pourquoi s'embêter avec curl ?

La fonction file de PHP est très bien pour ça.

http://fr2.php.net/file

<?php

//Récupération d'un tableau contenant chaque ligne
$lines = file('http://www.tonsite.com/url.html');

$dansLeDiv=0;
$contenuDiv='';

//Parcours du tableau
foreach ($lines as $line) {

//Si on est dans le div
if($dansLeDiv==1) {
$contenuDiv.=$line;
}

//Si on est dans le div et qu'on rencontre une balise fermante
if($dansLeDiv==1 && eregi('</div>',$line) $dansLeDiv=0;

//Si on rencontre un div avec l'id toto
if(eregi('id="toto"',$line) $dansLeDiv=1;

}

?>

Voici un exemple que je n'ai pas testé mais qui doit te mettre tout le contenu du div avec id="toto" dans la variable $contenuDiv. Attention il ne faut pas de div imbriqué dans l'exemple que je te donne.

Modifié par devorigin

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...