2009-05-27 4 views
0

Ceci est ma question. Quel est le meilleur moyen d'extraire certaines informations d'une page HTML? Ce que je fais actuellement est la suivante:Suggestion nécessaire: Meilleure façon d'analyser HTML en C#

  1. Télécharger la page en utilisant WebClient

  2. Convertir les données reçues à chaîne à l'aide UTF8Encoding

  3. Convertir la chaîne XML

  4. aide Les classes liées au XML provenant du .NET Framework extraient les données souhaitées

C'est ce que je fais actuellement sous forme résumée. Quelqu'un est-il au courant d'une autre méthode? Quelque chose qui peut être plus rapide ou plus facile?

Cordialement, Kiril

PS: Je l'ai entendu parler d'un cadre de test appelé Watin

qui vous permet de faire quelque chose de similaire, mais ne l'ai pas étudié beaucoup

+0

Essayez googling grattage pas l'analyse – inspite

+0

Ceci est une dupe de beaucoup de questions similaires .. – VVS

Répondre

0

Sauf si vous êtes travailler avec des expressions régulières XHTML parfaitement formées sera plus approprié pour l'analyse du code HTML?

Watin vous permet de clics sur un bouton de script, le script appelle etc sur une page Web via IE (peut-il utiliser d'autres navigateurs non sûr?). Je ne pense pas que cela va accomplir ce que vous cherchez.

+0

Les expressions régulières ne fonctionnent pas bien contre HTML malformé non plus. –

+0

Non mais je soupçonne que de nombreuses bibliothèques tierces les utilisent en conjonction avec la manipulation de chaînes standard pour traiter le html et de toute façon regex est supérieure à la flexibilité offerte par les requêtes XML. – alexmac

+0

Oui, ils le font - je les utilise tout le temps. Ils ne fonctionnent que très mal sur le HTML écrit humain qui ne provient pas d'un système de templates - une proportion infime de données structurées. Je n'aurais pas dû être rejeté par +1. –

5

Il semble que vous ayez compris comment extraire les données de la page (c'est la partie la plus simple).

Pour le reste, la bibliothèque la mieux gérée que je l'ai utilisé pour ce type de tâche est le HTML Agility Pack. C'est open source et très mature, entièrement écrit en .NET. Il gère malformé HTML et peut faire ce que vous avez besoin de deux façons différentes:

  • supporte nativement XPATH et l'interrogation de type XML contre le HTML DOM. Il est conçu pour imiter la bibliothèque XML de .NET, donc tout ce que vous pouvez faire contre XML avec .NET, vous pouvez le faire contre le HTML avec ceci.

  • Prend en charge la production XML valide à partir du HTML, de sorte que vous pouvez utiliser tous les outils XML.

0

Cela pourrait être simplifié un peu, en utilisant la méthode de WebClient.DownloadString je crois.

Voir d'autres réponses pour plus de détails sur l'analyse syntaxique, comme je l'ai pas essayé le HTML Agility Pack.

+0

Cela ne résoudrait pas le problème d'analyse, cependant. –

+0

Non, ce n'est pas le cas, mais j'ai considéré les autres réponses sur le HTML Agility Pack pour bien couvrir cet aspect. – samjudson

Questions connexes