*XPath ou DOM ne fonctionneront correctement que si ta page est valide XML. Si le HTML est mal formaté et que tu as des fermetures de balises qui manquent, je doute que ca fonctionne (et si tu as des <br> au lieu de <br/> c'est pareil...)
* Pour les regexp, a priori, je dirais qu'une regexp complexe est plus performante que plusieurs regex, parce que justement il y a moins de parsing de fichiers.
Cependant, si tu écrit mal ta regexp complexe et que tu met une étoile mal placée ou autre, ca peut durer beaucoup plus longtemps et surtout être très difficile a débugger pour déterminer le problème.
Si c'est un script "one shot" (ou jetable), fait plusieurs regexp. Ca sera plus simple (donc gain en temps de développement) et si ca doit s'executer pendant 3 jours, ca prendra moins de temps que si tu dois passer 1 semaine a corriger une regexp complexe.
Si c'est un script que tu sera amené a relancer de temps en temps, tu peux faire des regexp complexe, mais je te conseille de les construire dynamiquement.
Ca rajoute un peu de complexité, mais ca simplifie la recherche de problème et le débuggage une fois que tu as mis le système en place.
L'idée est de construite tes morceaux de regexp (exemples non fonctionnels ;o) :
1 2 3
| $prix=' ([0-9]+) euros';
$lieu=' a ([^ ]+)';
... |
puis de les aggreger dans une seule regexp :
$regexp='#'...$prix.'.*'.$lieu...'#';
comme ca tu peux facilement commenter une partie de ta regexp pour trouver la source d'un problème.
Enfin, sache que j'ai déjà fait ce genre de choses et que si tes pages n'ont pas été générés automatiquement par le même programme, tu va tomber sur des cas d'exceptions jusqu'au dernier fichier.
Il est alors intéressant de gérer dès le début un système de parsing partiel des fichiers :
1 2 3 4 5 6
| * Pour tout les fichiers a parser
* Parse
* Si erreur ou donnée non trouvée
* passage au fichier suivant
* Sinon
* Déplacement du fichier dans un dossier "OK" |
=> L'avantage c'est que tu va éviter de parser les fichiers "OK" plusieurs fois, au fur et a mesure que tu gère les exceptions.
Evidemment, si ton script est réutilisable, il faut que tu le repasse sur les fichiers OK ensuite pour vérifier que tu n'a pas "cassé" des règles en gérant les exceptions ;o)
Partager