Récupérer l'extrait d'une page web distante

cs_pebayart Messages postés 17 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 6 février 2014 - 3 févr. 2014 à 06:15
cs_pebayart Messages postés 17 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 6 février 2014 - 3 févr. 2014 à 17:34
Bonjour tout le monde :)

Voilà je prépare un petit projet perso (qui sera partagé quand il sera, au moins, beau a regarder ^^)

Je souhaiterais savoir comment récupérer un extrait de page web, manière aux publications sur facebook : on rentre une url et le script sort un texte d'une longueur donnée (disons par exemple 300 caractères) correspondant je pense au premier paragraphe du corps de la page;

J'ai essayé avec ça :

$contenuepage = file_get_contents($adresse);
preg_match_all("#<body (.*?)>(.*?)</body>#is", $contenuepage,$page);
$extrait = strip_tags($page[0][0]);
$extrait = trim(substr($extrait, 0, 300));


mais cela me sort toutes les balises et les javascripts ...

Il n'existerait pas de manière plus simple ?

comment je dois faire ??


Merci de votre attention

Pierre-Emm

2 réponses

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
3 févr. 2014 à 11:08
salut

le contenu que tu récupère est au format html, et son contenu est brut => il est normal de récupérer tout un contenu qui ne t'interesse pas ( mise en page, dynamisme, etc.).

Par contre, il nous faudrai un peu plus de détails, comme un exemple de contenu à interpréter (tu parle de paragraphe, ce qu'il faut c'est le détecter => en fonction de quoi? il y a quoi autour? ).

Je pense que tu as quelques question à de poser dans un premier temps.
Par exemple, tu souhaite récupérer les 300 premiers caractères d'un bloc de texte => tu peux identifier des blocs par les balises (<p> par exemple), mais il ne faut pas que les balises soient interprété comme tel => il y en aura à ignorer [titre, href, etc. ] d'autre à exclure [div, table, list, etc.]) . Bref toutes ces petites choses qui te permettront d'isoler la partie qui t'interesse.

naga
0
cs_pebayart Messages postés 17 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 6 février 2014
3 févr. 2014 à 16:51
Merci Nagashima :)

Les pages pour lesquelles je souhaite un extrait sont aléatoires ... ainsi que leur structure ...
je ne sais pas ce qu'il y a autour;

Donc ce n'est pas forcément un paragraphe ... ce peux très bien être dans une cellule de tableau, selon comment la page a était codé;

C'est vraiment comme sur facebook, tu rentre une url, il te sort un extrait de la page (avec une image) et hop tu publie;


En faite je suis entrain de me faire un gestionnaire de favoris, et je voudrais que cela affiche un résumé des pages indexés :)
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
3 févr. 2014 à 17:30
ok donc dans ton cas c'est un apercu que tu souhaite ;) Dans ce cas je dirai que tu as plusieurs choix : soit tu t'appuie carrément sur la mignature facebook (ou google si tu veux éviter d'être bloqué dans les écoles et/ou entreprise).

soit tu fait ta propre génération de vignette, et du coup on va isoler certaines choses :
- d'une part, certains sites internet vont avoir des données prévues pour la vignette : on va retrouver une image, un texte et un lien vers l'article (à mon avis facebook et google exploite ca, et ont peu être même un peu forcé la mise en place).

après éditer le code brut, c'est autre chose. La première serai de trouver la règle de base :
- du contenu texte est généralement entouré de
< p >
et contient disons au moins 5 mots (dans ce cas je dirai qu'il s'agit d'une phrase et non d'un menu). penser qu'il faudra ignorer les contenu de mise en forme tel que <br >, etc.
- le corp du site change tandis que les éléments du menu, de la bannière et du pied ont peu de chance de changer
...

En fait l'idée est de faire un bot qui va identifier la partie "corp" de ton lien (le site, pas un sous élément du site) de manière à ce que par la suite, notre bot sache ou y piocher les éléments (ca nécessitera une configuration à sauvegarder en base ou en texte).

Ensuite, une fois que le paramétrage d'un site et en place, un simple css suffira pour l'affichage final de la vignette.


à noter qu'il est possible aussi de détecter si on se trouve sur un cms (joomla, wordpress, etc.) et dans ce cas là la structure est connue et facilement exploitable.

demande moi si t'as des soucis pour le dev (regex, analyse, etc. ) ou si tu bloque encore sur le départ ;)

bon dev.
naga
0
cs_pebayart Messages postés 17 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 6 février 2014
3 févr. 2014 à 17:34
merci pour ton message, je reviendrais par ici dés que j'ai du nouveau :)
0
Rejoignez-nous