2012-02-05 22 views
6

Próbowałem HtmlAgilityPack i następujący kod, ale nie przechwytywania tekstu z list HTML:Jak wyodrębnić tekst widoczny na stronie ze źródła html?

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

Oto kod, który kończy się niepowodzeniem:

<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

To prawdopodobnie z powodu Javascript. – SLaks

+0

Pokaż "HTML", który analizujesz. – RedFilter

+0

@RedFilter Zaktualizowałem kod HTML. –

Odpowiedz

2

następujący fragment kodu działa dla mnie:

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

Bo trzeba chodzić na drzewo i concat w jakiś sposób InnerText wszystkich węzłów

Powiązane problemy