|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Bonsoir,
Pour parser une page HTML, j'utilise DOMDocument d'après les bons conseils de stealth35 ;-) : Code :
Code :
<p class="xxx">du texte<br/>encore du texte<br/><a title="bla bla" class="sfets" href="#">et enfin un autre texte</a></p> Code :
Jusque la tout va bien sauf que si je veux récupérer le contenu de ma balise <p> sans le lien <a> qu'il contient, je ne peux pas car dans ma boucle, $var->item($i)->nodeValue me retourne tout ce qui n'est pas dans des balises soit ici : du texteencore du texteet enfin un autre texte Ma question est la suivante : Est-il possible de récupérer avec le résultat d'une requete Xpath dans un Domdocument, le contenu d'une balise avec les balises qu'elle contient pour ensuite éventuellement le traiter avec des fonctions PHP afin d'en afficher ce que bon me semble ? Si non quelle serait la solution pour retirer ce qui ne me convient pas dans le résultat de ma requête ? dois-je changer la requête ? J'espère avoir été assez clair :-/ Merci d'avance ! |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
oui c'est possible t'as un exemple de innHTML dans les commentaires :
http://www.php.net/manual/fr/book.dom.php#89718
__________________
http://blog.stealth35.com/ |
|
|
10
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Ça fonctionne, c'est génial !
Merci infiniment de ton aide ! |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Salut à tous !
J'ouvre à nouveau le sujet car je me trouve confronté à un autre problème que j'aie vraiment du mal à résoudre... Dans le texte que je reçois avec la fonction énumérée ci dessus (DOMinnerHTML) voici mon code final "$dates->item($i)" me retourne le noeud ou ce trouve : Code :
<p class="xxx">du texte<br/>encore du texte<br/><a title="bla bla" class="sfets" href="#">et enfin un autre texte</a></p> Code :
<p class="xxx">du texte<br/>encore du texte<br/>et enfin un autre texte</p> J'ai essayé d'utiliser http://simplehtmldom.sourceforge.net/ mais je n'y suis pas parvenu et je peux surement le faire directement avec DOMDocument ? Merci |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
avant de faire ton DOMInnerHTML, sois tu fait un xpath sous un getElementsByTagName sur les <a> et tu fait un removeChild
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Je ne comprends pas très bien ce que tu veux dire...
Si je recherche tous les a de mon document et que je fais un removeChild ça ne va pas supprimer la balise ET son contenu ? moi je voudrais conserver le contenu de la balise a mais je voulais juste qu'il ne soit pas clickable. Je ne suis pas très à l'aise avec DOMDocument :-/ |
|
|
00
|
|
|
#7 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Je travail actuellement sur un portail comparatif de prix.
Je récupère ces balises sur des sites via DOMDocument et ensuite je cherche à les traiter pour les afficher comme je le voudrais sur mon portail. Pour l'exemple, je récupère une balise p dans laquelle se trouve un lien (qui pointe sur une URL interne du site ou je l'ai récupéré), je voudrais donc afficher cette information sur mon site en retirant le lien, mais uniquement le lien (car d'un je ne veux pas de lien sur cette information sur mon site, et de deux le lien ne peux marcher si je le récupère car il pointe sur une adresse interne au site que je viens de scanner). Au final, je cherche être à l'aise pour manipuler le contenu que je récupère via DOMDocument pour ensuite le remettre en forme et l'afficher correctement sur mon site. ça me permettrait de m'adapter à chaque site selon les cas de figures (qui sont différents sur chaque sites) |
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
c'est pas terrible de faire ça, il te faut aussi l’autorisation des sites pour pouvoir récupérer leurs contenus, mais aussi les modifiés, vérifie aussi si les sites de proposent pas une API pour les applications tiers
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Non il s'agit d'un très petit marché et les sites ne proposent pas d'API pour faire ça, cela dit il y a un avocat d'affaire dans ce projet qui m'a confirmé que j'avais le droit de faire ça dans la mesure ou je ne stock jamais la donnée.
Vu qu'il y a uniquement une vingtaine de site à scanner et que ce nombre ne grandira presque plus, j'ai opté pour cette solution car je n'ai pas trouvé un meilleur moyen... Penses-tu que je devrais procéder autrement ? |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
il faut que tu fasses comme j'ai dis plus haut
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Comme tu as dit plus haut me fait écrire beaucoup de lignes dans ma boucle. Je viens de trouver une solution alternative avec strip_tags() c'est de retirer toutes les balises en spécifiant les balises que je voulais garder (car je les connais toujours d'avance) du coup mon code deviens le suivant :
Code :
$var = strip_tags(DOMinnerHTML($dates->item($i)),'<br>'); Merci de ton aide en tout cas ! |
|
|
00
|
|
|
#13 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Je souhaitais justement les garder ces sauts de lignes et la propriété textContent du DOMNode ne me les conservaient pas c'est uniquement pour ça que je cherchais une solution alternative...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com