2009-03-17 10 views
4

.NET Je suis à la recherche des bibliothèques pour analyser HTML pour extraire les liens, les formulaires, les étiquettes etc.HTML Parsing Bibliothèques pour

LGPL ou toute autre licence favorable au développement commercial est préférable.

Avez-vous une expérience avec l'une de ces bibliothèques? Ou pourriez-vous recommander une autre bibliothèque similaire?

Répondre

10

Le HTML Agility Pack a des exemples de exactement ce genre de chose, et utilise XPath pour les requêtes familières - par exemple (de la page d'accueil), pour trouver tous les liens est tout simplement:

foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//[email protected]")) { 
    //... 
} 

EDIT

au 6/19/2012, le code ci-dessus, ainsi que le seul exemple de code indiqué sur la page HTML Agility Pack Examples ne fonctionnera pas. Juste besoin d'un léger ajustement comme indiqué ci-dessous.

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]")) 
{ 
    HtmlAttribute att = link.Attributes["href"]; 
    att.Value = Foo(att); // fix the link 
} 
doc.Save("file.htm"); 
+2

HTML Agility Pack est génial, je le recommande aussi. –

+2

D'accord. Nous l'avons utilisé dans un environnement de production, où nous avons analysé environ 50 000 (X) fichiers HTML/h, pour quelques années d'affilée. J'ai bien travaillé. – core

+0

Avez-vous des recommandations pour un projet GPL? HTML Agility Pack est Ms-Pl qui est [incompatible avec la GPL] (https://www.gnu.org/licenses/license-list.html#ms-pl). –