2015-06-22 95 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」會給你所有的段落。