2009-11-30 6 views
1

Existe-t-il un moyen d'extraire les données souhaitées à partir d'un code HTML brut qui a été écrit de façon non-nomique sans IDs et classes? Je veux dire, supposons qu'il y ait un fichier html enregistré d'une page web (profil) et que je veuille extraire les données comme (disons) "hobbies". Est-il possible de le faire en utilisant PHP?comment extraire des données à partir d'un fichier html brut

+0

Vous pouvez utiliser des expressions régulières dans PHP à cette fin. PHP n'est pas un langage spécifique à la PNL, mais vous pouvez bien sûr extraire des informations des dcouments comme dans d'autres langages à usage général. –

+0

les expressions régulières ne conviennent pas pour le HTML j'ai peur. Ce n'est pas une langue régulière. – echo

+0

Les expressions régulières fonctionnent correctement. vous n'avez pas besoin de faire l'appariement. J'ai parcouru des millions de pages en utilisant simplement des expressions régulières. –

Répondre

1

Utilisez regex! Je gosse, je gosse. Si vous connaissez l'état de la même page et que le format est suffisamment similaire, vous pouvez essayer d'écrire un analyseur manuel. Alternativement, il y a beaucoup de bibliothèques qui analysent html. Je ne suis pas assez familier avec PHP pour en recommander un, mais je suis sûr que certains Google pourraient vous prendre un long chemin. J'ai eu de la chance avec pure javascript HTML parser de John Resig avant. À la fin de la journée, si vous avez besoin d'informations sémantiques d'une page html qui n'est pas construite sémantiquement, vous êtes probablement condamné par programmation et votre meilleur pari peut être un mechanical turk.

1

On dirait que vous recherchez un interpréteur PHP DOM, tel que this one. Il sera probablement un peu difficile d'extraire les données dont vous avez besoin si le HTML est vraiment dépourvu de structure sémantique, mais un parseur DOM est l'endroit où commencer.

1

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 d'après mon expérience, vous pouvez toujours isoler les é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 lors de l'écriture de web-araignées). Les expressions régulières sont plus efficaces et plus rapides que l'écriture de logique de grattage contre une hiérarchie DOM. Vous devez donc ouvrir quelques pages de profil et analyser la structure statique. Ensuite, écrivez simplement une expression régulière pour isoler les champs d'intérêt.

0

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

La seconde est d'utiliser la version PHP de html5lib parser, qui tente d'implémenter la recherche HTML5 dans les routines d'analyse de navigateur en cours. S'il s'affiche dans un navigateur, html5lib peut l'analyser. En utilisant l'une ou l'autre approche, vous vous retrouverez avec un objet DOM que vous pouvez interroger en utilisant des expressions xpath. Étant donné que vos documents théoriques manquent de structure sémantique, vous aurez envie de regarder les parties du document à partir d'un état d'esprit «la 5ème portée dans le 3ème p».

Plus d'informations here (avertissement de liaison automatique).

Questions connexes