2015-06-22 130 views
-1

下面给出的代码是用于从html页面读取段落。它是好的代码,但如何可以采取一个段落或如果我只保存段落2或5如何只能采摘具体的段落号。阅读html asp.net C#的特定段落#

public string GetParagraphs(string html, int numberOfParagraphs) 
{ 
    const string paragraphSeparator = "</p>"; 
    var paragraphs = html.Split(new[] { paragraphSeparator }, StringSplitOptions.RemoveEmptyEntries); 
    return string.Join("", paragraphs.Take(numberOfParagraphs).Select(paragraph => paragraph + paragraphSeparator)); 
} 

回答

1

除了这个代码被打破从根本上(你不能只是劈在</p>,并不是所有的HTML你会发现那里是有效的HTML),你似乎只是为了寻找Skip()方法:

public string GetParagraphs(string html, int startParagraph, int numberOfParagraphs) 
{ 
    // ... 

    var result = paragraphs.Skip(startParagraph) 
          .Take(numberOfParagraphs) 
          .Select(paragraph => paragraph + paragraphSeparator); 
} 
+0

伟大的....感谢它的工作。 – user5035334

1

如果您想正确执行此操作,请使用HtmlAgilityPack。 一旦你拥有了它,你去的东西,如:

 HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); 
     htmlDoc.OptionFixNestedTags = true; 
     htmlDoc.Load(new StringReader(PageContent)); 
     if (htmlDoc.DocumentNode != null) 
     { 
     HtmlNodeCollection nodes = htmlDoc.DocumentNode.SelectNodes(XPath); 
     // Work with nodes selected via XPath here 
     } 

的PageContent变量应包含网页的全HTML内容。 XPath变量是一个简单的XPath查询,例如, “// p”会给你所有的段落。