2009-11-23 2 views
2

HTML 민첩성 팩을 사용하여 HTML 파일 본문의 첫 번째 단락 텍스트를 가져 오는 방법은 무엇입니까? DIGG 스타일 링크 제출 도구를 만들고 텍스트의 첫 번째 단락과 제목을 가져오고 싶습니다. 제목은 쉽습니다. 신체에서 텍스트의 첫 번째 단락을 얻는 방법에 대한 제안은 무엇입니까? 페이지에 따라 P 또는 DIV 내에있을 수 있습니다.HTML 민첩성 팩 - 페이지 요약 얻기

답변

3

당신이 제어하는 ​​html입니까? 그렇다면, 당신은 P에게 ID 또는 클래스를 제공하고

//p[@id=\"YOUR ID\"] or //p[@class=\"YOUR CLASS\"] 

편집을 통해 찾을 수 있습니다 : 을 당신은 아마 아래 작동, HTML을 제어하지 않기 때문에. 모든 HtmlTextNodes를 사용하고 지정된 임계 값보다 큰 텍스트 그룹을 찾습니다. 그것은 완벽하지는 않지만 올바른 방향으로 갈 수 있습니다.

String summary = FindSummary(page.DocumentNode); 

private const int THRESHOLD = 50; 
private String FindSummary(HtmlAgilityPack.HtmlNode node) { 
    foreach (HtmlAgilityPack.HtmlNode childNode in node.ChildNodes) { 
     if (childNode.GetType() == typeof(HtmlAgilityPack.HtmlTextNode)) { 
      if (childNode.InnerText.Length >= THRESHOLD) { 
       return childNode.InnerText; 
      } 
     } 

     String summary = FindSummary(childNode); 
     if (summary.Length >= THRESHOLD) { 
      return summary; 
     } 
    } 

    return String.Empty; 
} 
+0

나는 HTML을 제어하지 않습니다는, 사용자는 원하는 페이지를 제출할 수 있습니다, 그래서 용기의 ID 또는 클래스가 – reach4thelasers

+0

감사 할 것이다 모르겠어요! 그게 내가 찾고 있던거야! – reach4thelasers

0

민첩성 팩은 간단한 xpath 문을 사용하는 html로드를 쿼리하기 위해 xpath를 사용합니다. 뭔가 같은 ...

HtmlDocument htmldoc = new HtmlDocument(); 
htmldoc.LoadHtml(content); 

HtmlNodeCollection firstParagraph = htmldoc.DocumentNode.SelectNodes("//p[1]"); 
관련 문제