Bonjour,
Je cherche un composant permettant de "parser" des documents HTML à la façon de SimpleHtmlParser pour PHP (http://simplehtmldom.sourceforge.net/), est-ce que quelqu'un connaît ça ?
Merci.
Version imprimable
Bonjour,
Je cherche un composant permettant de "parser" des documents HTML à la façon de SimpleHtmlParser pour PHP (http://simplehtmldom.sourceforge.net/), est-ce que quelqu'un connaît ça ?
Merci.
Tu as l'interface IHTMLDocument2 accessible depuis un TWebBrowser.Document !
Cela utilise les interfaces internes de IE !
Bonjour,
regarde ce projet, ça pourrait t'interesser je pense :
http://sourceforge.net/projects/htmlp/
@++
Dany
Merci à tous 2.
@ShaiLeTroll: j'ai fouillé le web de fonds en combles, je n'ai pratiquement rien trouvé sur le sujet, je préfère faire l'impasse :-\
@skywaukers: j'avais déjà téléchargé ce projet mais il n'y a aucune doc et aucun commentaire dans le code; et comme c'est assez touffu (pour moi)... :-\
Le truc que j'ai trouvé qui se rapproche le plus, c'est "InternetTools" (il faut que je retrouve l'adresse du site) mais hélas c'est pour FreePascal/Lazarus donc même si ça marche il risque d'y avoir pas mal d'adaptations à faire (et je suis fainéant :lol:).
Refouille encore !
[D7]IHtmlDocument --> WebBrowser : un basique a étudier ! Surtout l'utilisation de IHTMLElementCollection
utilise MSHTML_TLB.pas cela contient l'importe de MSHTML.TLB
théoriquement dans "Borland\Delphi6\Source\Internet" ou "CodeGear\BDS\5.0\source\Win32\internet"
Rien qu'avec toutes ces déclarations, ça donne de quoi fouiller !
Enfin le cérise sur le gateau
MSDN IHTMLDocument2 Interface and Object, c'est indiqué .NET mais c'est la même chose puisque c'est un Objet OLE intégré à IE !
Pour le THtmlParser, en même temps, c'est assez simple d'utilisation à la lecture du code, c'est un arbre de TElement (TNode.childNodes ... récursivité)
C'est la même chose que le TXMLDocument !
Un basique lorsqu'on le connait le bien XML et sa nature à être représenté sur la forme d'une arborsence d'objets noeuds polymorphes !
Allez GoustiFruit presse toi un peu le jus (ça donne quoi le jus de pain de singe ?), ça devrait allez !
Utilise un coup-chou pour ton baobab dans la main !
Bon là j'avoue que je n'ai pas compris :oops:
Sinon - aurais-je oublié de le préciser ? - ce que je recherche avant tout c'est la possibilité de travailler sur des "sélections" dans mon code html en passant par des requêtes de type XPath, et d'après ce que j'ai cru comprendre (?) en parcourant le net, le bidule MsHtml ne le permet pas (? idem pour le THMLParser !?)... Ou au mieux ça "marchouille" sur le xml mais pas sur le html ?
C'est quand même ballot que ce soit si simple en PHP et si introuvable en pascal :calim2:
En même temps, un parseur HTML dans un langage conçu pour le Web, c'est assez normal !
Delphi est plus ouvert, et le Web c'est vraiment pas son truc, surtout du HTML, on va plus utilisé des WebServices SOAP ou REST qu'un format avec une formalisation douteuse comme le HTML !
Pour XPath, je ne connais pas trop, à part des bouts en XSLT !
Au pire, tu te fais ton propre parser XPath (juste ce que tu as besoin) ensuite, c'est des boucles ...
PS : Le pain de Singe, c'est le fruit du Baobab ! le Baobab étant un très grand arbre donnant la taille de ton poil dans ta main !
Je te taquine Gros Fainéant ! :mouarf:
PS2 : Attention Solution de Bourrin !
Tu lance "PHP.EXE ScriptHMTLToGousti.php", ce script contient un SimpleHtmlParser qui transforme le HTML en un format plus pratique pour toi (te fourni un XML ne contenant que ce que tu as besoin après le XPath)
Tu choppe le retour soit par Pipe (Voir CreateProcess, cherche sur le forum), soit tu indiques un fichier de sorti pour le echo
Rigole pas, j'ai du faire ce genre de truc par ce que mon ancien employeur ne voyait plus qu'en PHP, j'ai donc intégrer un module d'import PHP utilisant du XML + d'autres scripts PHP spécifiques, ce module PHP utilisant lui même un ActiveX qui appelle des fonctions de l'appli ayant lancé l'Import ! Oui Oui un délire ! Très fun à développer durant mon Préavis !
Ne t'inquiète pas, pas besoin de me préciser quand tu te fous de moi, je le prends bien en général. Surtout quand ça vient d'un Maître Jedi du code :zoubi:
L'avantage des sélections à la XPath c'est qu'en 2 lignes de code, on récupère exactement tout ce dont on a besoin, sans avoir à parcourir tout le document: tags, attributs, texte... (voir nombreux exemples sur la doc de SimpleHTMLDom).
Mais justement en relisant cette doc je suis tombé sur ça et je me demande si le THTMLParser ne permettrait pas de faire ça (j'ai vu qu'il possède des fonctions/propriétés GetElementByID, ChildNodes, etc. , éventuellement ça pourrait être suffisant... un poil plus compliqué, mais peut-être jouable.
Tu avais regardé du côté de PHP4Delphi ?Citation:
Rigole pas, j'ai du faire ce genre de truc par ce que mon ancien employeur ne voyait plus qu'en PHP, j'ai donc intégrer un module d'import PHP utilisant du XML + d'autres scripts PHP spécifiques, ce module PHP utilisant lui même un ActiveX qui appelle des fonctions de l'appli ayant lancé l'Import ! Oui Oui un délire ! Très fun à développer durant mon Préavis !
Oui, c'est ce que je voulais dire de le faire à la main !
Avec TXMLDocument, je fais souvent ce genre de boulot de naviguer de noeud en noeud !
Non, je connaissais pas PHP4Delphi mais DelPHP de Sub0
Mais c'est très interessant !
ça permet d'utiliser du PHP en Delphi mais aussi de coder des DLL Delphi pour PHP !!!
Faut savoir que le Module d'Import PHP est un module de Voozanoo3, j'ai du intégré ce module existant via la ligne de commande de PHP.exe, c'est très simple, le déploiment assez facile aussi (un répertoire contenant un Kit PHP donc tout ce qu'il faut exe + dll + script php du module import), les chemins, les infos DB, le fichier XML d'import étant des paramètres de la cmd
Et seul les scripts PHP spécifiques à des imports (non fourni avec le Kit PHP mais fourni par l'appli Delphi) devait utiliser l'ActiveX (ce truc à été pondu parce que l'appli Delphi est un gros tas de spaghetti, impossible d'en extraire des fonctionnalités, l'objet COM est juste un relai (une sorte de proxy) ! l'appli Delphi lance une instance COM, connecte ses EventHandler à l'EventSink, le module PHP en cmd utilise l'instance COM active et appel des fonctions qui ne font qu'appeler les Event, juste un relai !)
J'ai développé cela sachant que je quittais la boite, et que personne ne reprendrait la partie Delphi qui est morte !
Tout PHP c'est le crédo ! :vomi: ! Il n'est jamais bon de cultiver qu'une seule techno, la diversité assure de pouvoir rebondir au besoin !
A l'opposé de mon intérêt pour l'industrie, la programmation temps-réel et même si j'en ai l'occaz de programmer en C directement sur micro-controlleur !
Je reste ouvert au Web si cela apporte un vrai plus aux clients et non un gadget à la mode !