2012-02-05 37 views
6

me trataron HtmlAgilityPack y el siguiente código, pero no captura el texto de las listas HTML:¿Cómo puedo extraer texto visible en una página de su fuente html?

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(htmlStr); 
HtmlNode node = doc.DocumentNode; 
return node.InnerText; 

Aquí está el código que falla:

<as html> 
<p>This line is picked up <b>correctly</b>. List items hasn't...</p> 
<p><ul> 
<li>List Item 1</li> 
<li>List Item 2</li> 
<li>List Item 3</li> 
<li>List Item 4</li> 
</ul></p> 
</as html> 
+0

Eso es probablemente debido a Javascript. – SLaks

+0

Muestra el 'HTML' que estás analizando. – RedFilter

+0

@RedFilter He actualizado el HTML. –

Respuesta

2

siguiente fragmento de código funciona para mí:

string StripHTML(string htmlStr) 
{ 
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
    doc.LoadHtml(htmlStr); 
    var root = doc.DocumentNode; 
    string s = ""; 
    foreach (var node in root.DescendantNodesAndSelf()) 
    { 
     if (!node.HasChildNodes) 
     { 
      string text = node.InnerText; 
      if (!string.IsNullOrEmpty(text)) 
      s += text.Trim() + " ";      
     } 
    } 
    return s.Trim(); 
} 
3

Porque necesita caminar sobre árbol y el concat en de alguna manera InnerText de todos los nodos

Cuestiones relacionadas