Парсинг на C# с HtmlAgilityPack
Согласно данным с официального сайта: 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(@clas, -ищет по содержимому класса (contains(параметр, искомое)),
- ‘styles__Ellipsis-sc-1fw79ul-0 cDcbYl styles__Child-qpwb36-0 styles__Primary-qpwb36-1 eTiXVY’-то что должен содержать класс.
Более подробно:
- про xpath можно найти на https://testerslittlehelper.wordpress.com/2016/07/10/real-xpath/ https://soltau.ru/index.php/themes/dev/item/413,
- про HtmlAgilityPack на https://html-agility-pack.net/ (содержит большое количество вопросов-ответов).
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.