C#, Программирование

Парсинг на C# с HtmlAgilityPack

Время прочтения: 2 мин.

Согласно данным с официального сайта: HtmlAgilityPack- это анализатор HTML, написанный на C # для чтения/записи DOM (поддерживает обычный XPATH или XSLT)

Рассмотри практическое применение:

Подцепляем ссылку на него в студии.

Можно указать путь (скачать с сайта https://html-agility-pack.net/ или прямо из студии через NuGet).

Прописываем в юзингах: using HtmlAgilityPack;

И начинаем знакомство.

Создаем экземпляр:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); - это то, что будет хранить наш Html документ

Заливаем в экземпляр информацию:

doc.Load(); — в скобках необходимо указать либо поток, либо локальный путь, либо адрес из интернета.

Теперь в памяти компьютера лежит страница сайта, можем собирать с нее информацию.

Полученные теги будем закидывать в:

HtmlNode и HtmlNodeCollection

Первое – используем для одного тега, второй – для другого.

Далее объявляем переменную и сразу закидываем тэги:

HtmlNodeCollection collection = doc.GetElementbyId(“id”)

Теперь можем взять, например, ParentNode-родительский узел или ChildNodes-дочерние элементы.

doc.GetElementbyId(“id”). ChildNodes

Затем можно указать что берем InnerText-текст тэга Inner или InnerHtml-текст с разметкой:

collection[1]. InnerText

doc.GetElementbyId(“id”). ChildNodes[0].InnerHtml

Используя HtmlAgilityPack можно осуществлять поиск в том числе и по классам, используя хpath.

HtmlNodeCollection span = doc.DocumentNode.SelectNodes("//span[contains(@class, 'styles__Ellipsis-sc-1fw79ul-0 cDcbYl styles__Child-qpwb36-0 styles__Primary-qpwb36-1 eTiXVY')]");

Подробнее:

  • //-откуда начинаем путь (сейчас с начала документа),
  • Span-любой тэг, который ищет “a”, “div”, “h1” и т.д.
  • [contains(@class,-ищет по содержимому класса (contains(параметр, искомое) ),
  • ‘styles__Ellipsis-sc-1fw79ul-0 cDcbYl styles__Child-qpwb36-0 styles__Primary-qpwb36-1 eTiXVY’-то что должен содержать класс .

Более подробно:

Советуем почитать