используя HtmlAgilityPack для выбора innerHtml - PullRequest
0 голосов
/ 29 октября 2018

скажем, у меня есть HTML-документ

<div class=" wrap_body text_align_left" style="">
  <div class="some"> hello </div>
  <div class="someother"> world </div>
  hello world
</div>

я хочу извлечь это

      <div class="some"> hello </div>
      <div class="someother"> world </div>
      hello world

Каков наилучший способ извлечения с использованием HtmlAgilityPack с c # или vb.net? это мой код, пока не сделано, но немного борьбы. спасибо!

For Each no As HtmlAgilityPack.HtmlNode In docs.DocumentNode.SelectNodes("//div[contains(@class,'wrap_body')]")
    Dim attr As String = no.GetAttributeValue("wrap_body", "")

Next

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы можете использовать метод SelectNodes из DocumentNode для извлечения определенных узлов из HTML.

class Program
{
    static void Main(string[] args)
    {
        string htmlContent = File.ReadAllText(@"Your path to html file"); ;

        HtmlDocument doc = new HtmlDocument();

        doc.LoadHtml(htmlContent);

        var innerContent = doc.DocumentNode.SelectNodes("/div").FirstOrDefault().InnerHtml;

        Console.WriteLine(innerContent);
    }
}

Выход:

enter image description here

0 голосов
/ 29 октября 2018

Ниже приведен пример для получения внутреннего HTML

var html =
        @"<body>
            <div class='wrap_body text_align_left' style=''>
  <div class='some'> hello </div>
  <div class='someother'> world </div>
  hello world
</div>
        </body>";

        var htmlDoc = new HtmlDocument();
        htmlDoc.LoadHtml(html);

        var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body/div");

        foreach (var node in htmlNodes)
        {

            Console.WriteLine(node.InnerHtml);

        }
...