comment extraire des données d'un fichier HTML brut

y a-t-il un moyen d'extraire les données désirées d'un html brut qui a été écrit de façon non sémantique avec IDs et classes ? Je veux dire, supposons qu'il y ait un fichier html sauvegardé d'une page Web(profil) et je veux extraire les données comme (disons)'hobbies'. Est-il possible de faire cela en utilisant PHP?

1
demandé sur Charles Stewart 2009-11-30 20:13:41

5 réponses

Utiliser regex ! J'ai gamin, j'étais gamin. Si vous connaissez l'état de la même page, et le format est garanti pour rester assez semblable, alors vous pouvez essayer d'écrire un analyseur manuel. Sinon, il y a beaucoup de bibliothèques qui va parser du html. Je ne suis pas assez familiarisé avec PHP pour en recommander un, mais je suis sûr que quelques recherches sur Google pourraient vous prendre un long chemin. J'ai eu de la chance avec de John Resig pur JavaScript HTML parser avant.

à la fin de la journée, si vous avez besoin d'informations sémantiques à partir d'une page html qui n'est pas construit sémantiquement, vous êtes probablement condamné programmatiquement et votre meilleur pari peut être un turk mécanique .

1
répondu Chris Clark 2017-05-23 10:29:54
3
répondu empc 2009-11-30 17:19:03

sonne comme si vous cherchiez un analyseur de DOM PHP, tel que celui-ci . Il sera probablement un peu difficile de retirer les données dont vous avez besoin si le HTML est vraiment dépourvu de structure sémantique, mais un DOM parser est l'endroit pour commencer.

1
répondu echo 2009-11-30 17:19:05

Oui la technique est appelée web scraping . Vous pouvez utiliser le DOM si son html valide. Si la page est générée dynamiquement le générateur aurait utilisé une certaine structure, et de mon expérience vous pouvez toujours isoler des éléments d'intérêt.

si DOM ne fonctionne pas pour vous, vous pouvez simplement utiliser des expressions régulières (c'est ce que j'ai toujours fait en écrivant des web-spiders). Les expressions régulières sont plus efficaces et plus rapides que l'écriture raclant la logique contre une hégémonie. Vous devez donc ouvrir quelques pages de profil et analyser la structure statique. Ensuite, il suffit d'écrire une expression régulière pour isoler les champs d'intérêt.

1
répondu Hassan Syed 2009-11-30 17:20:00

il y a deux approches à prendre avec PHP. Le premier est de nettoyer votre document en utilisant l'extension tidy donc il est valide XHTML, et donc XML bien formé, et donc peut être analysé en utilisant des outils XML.

le second est d'utiliser la version PHP de html5lib parser, qui tente de mettre en œuvre la recherche HTML5 dans les routines actuelles de parsing de navigateur. Si elle s'affiche dans un navigateur, html5lib peut l'analyser.

en utilisant l'une ou l'autre approche, vous finirez avec un objet DOM que vous pouvez interroger en utilisant les expressions xpath. Depuis vos documents théoriques manque sémantique de la structure, vous aurez envie toook à l'parties d'un document à partir d'un "5ème span à l'intérieur de la 3ème p" mentalité.

Plus d'informations ici (auto-avertissement de lien).

0
répondu Alan Storm 2009-11-30 17:43:29