dom-parsing

DOM parsing | Récupérer les éléments HTML d’une page externe

Cette opé­ra­tion s’appelle le DOM par­sing, en fran­çais l’analyse syn­taxique DOM.

Ana­lyse syn­taxique DOM à par­tir d’une page HTML externe

Le DOM, pour Docu­ment Object Model, est un sys­tème qui asso­cie une arbo­res­cence à la struc­tu­ra­tion HTML d’une page.

Le par­sing, ou l’analyse syn­taxique, est ce qui per­met, après ana­lyse de la source, d’extraire cer­tains élé­ments HTML (<p></p>, <a></a>, <h2></h2>, … ) de cette source pour pou­voir les manipuler.

Un exemple de DOM à partir d'une structuration HTML - source

Un exemple de DOM à par­tir d’une struc­tu­ra­tion HTML – source

Nous pou­vons réa­li­ser sim­ple­ment cela avec la biblio­thèque PHP SimpleHTML

Exemple 1 : récu­pé­rer tous les élé­ments h2 de la page http://www.lemonde.fr

dom-parsing-h2-demo

Dans cet exemple, nous allons récu­pé­rer, sans mise en forme, tous les élé­ments h2 de la page source http://www.lemonde.fr

Dans le fichier .zip à télé­char­ger, vous trou­ve­rez 2 fichiers :

  •  dom-parsing-h2.php

    il nous per­met­tra d’afficher les élé­ments HTML extraits. C’est ce fichier que nous édi­te­rons et consul­te­rons. Si nous pla­çons ce fichier à la racine de notre ser­veur, il fau­dra aller à l’URL http://www.monnomdedomaine.fr/dom-parsing-h2.php pour pou­voir consul­ter le résul­tats de l’opération

  • simple_html_dom.php

    nous n’ouvrirons, ni n’éditerons ce fichier. C’est le fichier de la biblio­thèque qui per­met le par­sing. Il fau­dra juste qu’il soit pré­sent, à côté de dom-parsing-h2.php, au même niveau d’arborescence.

parsing-arbo

Les 2 fichiers sont au même niveau d’arborecence

Demo

Télé­char­ger le code commenté

Exemple 2 : récu­pé­rer tous les élé­ments img de la page http://www.lemonde.fr

dom-parsing-img

Demo

Télé­char­ger le code commenté

Ana­lyse syn­taxique d’un flux RSS

Petit rap­pel sur le RSS. Source.

Il est éga­le­ment pos­sible d’analyser un flux RSS pour en extraire du texte et des images.

Un plu­gin jQuery pour mener cette tâche à bien :

https://github.com/jfhovinne/jFeed

0