В этом сравнительном руководстве вы увидите:
- Что такое HTML-парсер C# и какие варианты использования он поддерживает
- Что следует учитывать при сравнении лучших HTML-парсеров в C#
- Какие библиотеки C# HTML-парсинга являются лучшими
Приступим!
Что такое HTML-парсер C#?
HTML-парсер C# — это библиотека, которая позволяет анализировать HTML-документы, а зачастую и XML-контент. По сути, эти пакеты анализируют HTML-код и преобразуют его в C#-представление DOM (Document Object Model).
Обычно HTML-парсеры в C# принимают в качестве входных данных локальные файлы, URL-адреса или необработанные HTML-строки. Затем они анализируют HTML-код, идентифицируя такие элементы, как теги, атрибуты и текстовые узлы. В процессе парсинга они строят древовидную структуру, которая представляет иерархию данного HTML-документа.
Более продвинутые инструменты также предоставляют методы для извлечения данных из HTML-узлов. Это открывает возможности для Веб-скрейпинга в .NET. Если вы не знакомы с этим понятием, ознакомьтесь с нашим полным руководством по Веб-скрейпингу.
C# HTML-парсеры обычно поставляются с API выбора узлов, основанным на CSS-селекторах и/или выражениях XPath. В некоторых случаях они также предоставляют более простые настраиваемые методы для выбора определенных элементов в DOM.
Прочитайте нашу статью, чтобы узнать список лучших HTML-парсеров.
Аспекты, которые следует учитывать при оценке лучших HTML-парсеров C
Вот список наиболее важных элементов, которые следует учитывать при сравнении библиотек парсинга C#:
- Функции: функциональные возможности, предоставляемые парсером.
- Плюсы: основные преимущества, предоставляемые библиотекой.
- Минусы: основные недостатки парсера.
- Звезды GitHub: количество звезд, которые имеет репозиторий, связанный с библиотекой, на GitHub.
- Среднее количество ежедневных загрузок: среднее количество ежедневных загрузок пакета согласно реестру NuGet.
- Последний выпуск: дата выпуска последней версии библиотеки (на момент написания статьи).
Давайте теперь применим эти критерии для оценки лучших библиотек HTML-парсеров C# в мире ИТ!
5 лучших HTML-парсеров в C#
Пришло время открыть для себя лучшие библиотеки HTML-парсеров на C#.
1. AngleSharp

AngleSharp — это библиотека .NET, которая может анализировать гипертексты на основе угловых скобок, такие как HTML, SVG и MathML. Пакет также поддерживает парсинг XML, но без проверки. AngleSharp также может анализировать CSS.
По сравнению с Html Agility Pack, этот HTML-парсер C# построен на основе официальной спецификации W3C. Это означает, что он создает идеально переносимое представление HTML5 DOM, которое обеспечивает полную совместимость с результатами в популярных браузерах.
Библиотека также содержит стандартные методы JavaScript для обхода дерева, такие как querySelector() или querySelectorAll(). Идея проекта заключается в том, чтобы предоставить возможность делать с DOM в C# все то же, что и в JavaScript.
Более подробную информацию можно найти вофициальной документации.Особенности:
- Механизм CSS-селектора для поиска узлов в DOM
- Встроенный HTTP-клиент
- Полная поддержка запросов LINQ для исследования DOM
- Возможности парсинга HTML, CSS, SVG и MathML
- Простой движок выполнения JavaScript
- Функция исправления ошибок HTML
Плюсы
- Основан на спецификациях W3C
- Кроссплатформенность, благодаря которой работает на .NET, Unity, Xamarin и других платформах
- Отличная производительность
- Соответствие спецификациям HTML 5.1 и CSS3
- Обширная и полная документация
- Возможность расширения с помощью дополнений
Минусы
- Требуется дополнительное расширение для поддержки XPath
Звезды GitHub:5 тыс. Среднее количество скачиваний в день: ~25 тыс.
Последний выпуск: 7 марта 2024 г.
2. Html Agility Pack

Html Agility Pack, также известный как HAP, — это гибкий HTML-парсер для чтения и записи DOM в C#. По умолчанию он поддерживает простой XPath или XSLT. CSS-селекторы доступны через расширение HtmlAgilityPack.CssSelector или Fizzler.
Парсер очень толерантен к некорректному HTML. Это делает его отличным инструментом для работы с реальными страницами из Интернета, которые могут не соответствовать стандартам. Посмотрите, как работает парсер, в нашем руководстве по Веб-скрейпингу в C#.
Более подробную информацию можно найти наофициальном сайте.
Особенности:
- Возможности декодирования специальных символов HTML
- API для манипулирования DOM
- Встроенный HTML-парсер
- Экспериментальный парсер браузера для страниц с динамическим контентом
Преимущества
- Возможность загрузки HTML из файлов, строк или из Интернета (а также, в экспериментальном режиме, из внутреннего браузера)
- Расширяемый с помощью расширений
- Может обрабатывать некорректный HTML
- Хорошо документирован
- Более 165 миллионов загрузок
Минусы
- Нет встроенной поддержки CSS-селекторов
- Медленнее, чем AngleSharp
Звезды GitHub: 2,6 тыс.
Среднее количество скачиваний в день: ~34 тыс.
Последний выпуск: 1 мая 2024 г.
3. CsQuery

CsQuery — это полнофункциональный движок CSS-селекторов, HTML-парсер и порт jQuery для C#. В частности, он поддерживает все селекторы CSS2 и CSS3, а также все методы манипулирования DOM, предоставляемые jQuery. Таким образом, вы можете использовать все те же методы jQuery, с которыми вы привыкли работать, для обхода и манипулирования DOM.
HTML-парсер C# также предлагает некоторые другие полезные методы, такие как parseJSON() и toJSON(). Кроме того, он поставляется с интегрированным и настраиваемым HTTP-клиентом для извлечения HTML-документов из Интернета.
Особенности:
- Возможности манипулирования DOM
- CsQuery Promise API для управления асинхронными событиями, такими как загрузка контента с удаленных URL-адресов без блокирования выполнения
- API для создания DOM
- Настраиваемые параметры рендеринга для удаления комментариев, игнорирования несоответствующих закрывающих тегов и т. д.
- Возможности парсинга JSON
- Встроенный HTTP-клиент
Плюсы:
- Синтаксис, похожий на jQuery
- C#-порт HTML-парсера validator.nu, используемого в браузерном движке Gecko
- Намного быстрее, чем большинство других библиотек HTML парсинга на C
- Поддержка CSS-селекторов
Минусы
- Не поддерживается с 2013 года, с несколькими известными ошибками, которые так и не были исправлены
- Нет поддержки XPath
Звезды GitHub: 1,2 тыс.
Среднее количество скачиваний в день: ~2 тыс.
Последний выпуск: 4 июня 2013 г.
4. MariGold.HtmlParser

MariGold.HtmlParser — это пакет C# для парсинга HTML-документов. Он позволяет проходить по документу, анализируя каждый элемент по отдельности, или анализировать его целиком за один раз. В последнем случае библиотека рекурсивно проанализирует все дочерние элементы за вас.
По умолчанию MariGold.HtmlParser анализирует HTML, но не CSS внутри тегов<STYLE>или из внешних таблиц стилей. В то же время он предоставляет метод для анализа любых встроенных или внешних стилей CSS в документе.
Особенности:
- Поиск узлов по имени тега с помощью метода
FindFirst() - Полный API для обхода DOM, начиная с текущего узла
- Возможности обновления HTML и CSS
Преимущества
- Может выполнять парсинг как HTML, так и CSS HTML-документа
- Может разрешать относительные URL-адреса внешних таблиц стилей
- Отсутствие внешних зависимостей
- Чрезвычайно легкий пакет (41,47 КБ)
Минусы
- Не очень популярен
- Не поддерживает CSS-селекторы
- Нет поддержки XPath
Звезды GitHub: 5
Среднее количество скачиваний в день: 124
Последний выпуск: 18 июня 2023 г.
5. Majestic-12

Majestic-12 — это открытый, кроссплатформенный, высокопроизводительный HTML-парсер на C#. Библиотека не зависит от каких-либо внешних зависимостей, используя только некоторые основные пакеты .NET. В документации указано, что авторы используют ее для парсинга более 3 ТБ HTML в день. Однако проект не обновлялся более 15 лет.
Пакет NuGet, связанный с библиотекой, называетсяMajestic12HtmlParser. Хотя он был добавлен в реестр NuGet только 27 августа 2015 года, кодовая база по-прежнему ссылается на версию 3.1.4, выпущенную 8 августа 2008 года.
Особенности:
- Парсинг HTML путем разбиения на небольшие фрагменты, такие как теги, текст, комментарии и т. д.
- Возможность обновления исходного HTML-кода данного узла
- Перемещение по дереву с помощью метода
ParseNext()
Плюсы
- Высокая производительность
- Протестировано на больших объемах HTML
- Настраиваемые возможности парсинга
- Покрытие кода более 70
Минусы
- Последнее обновление было в 2008 году
- Нет поддержки CSS-селекторов
- Нет поддержки XPath
Звезды GitHub: Нет на GitHub
Среднее количество скачиваний в день: ~1
Последний выпуск: 8 августа 2008 года
Лучший HTML-парсер для C#: сводная таблица
Сравните лучшие HTML-парсеры C# с помощью следующей сводной таблицы:
| Парсер | Особенности | Звезды GitHub | Среднее количество скачиваний в день | Статус обслуживания | Встроенный HTTP-клиент | Поддержка CSS-селекторов | Поддержка XPath |
| AngleSharp | Много | 5 тыс | ~25 тыс. | В настоящее время поддерживается | ✔️ | ✔️ | Через расширение |
| Html Agility Pack | Многие | 2,6 тыс. | ~34 тыс. | В настоящее время поддерживается | ✔️ | Через расширение | ✔️ |
| CsQuery | Средний | 1,2 тыс. | ~2 тыс. | Больше не поддерживается | ✔️ | ✔️ | ❌ |
| MariGold.HtmlParser | Немногие | 5 | 124 | В настоящее время поддерживается | ❌ | ❌ | ❌ |
| Majestic-12 | Немногие | — | ~1 | Больше не поддерживается | ❌ | ❌ | ❌ |
Замечательно! Теперь вы эксперт по HTML-парсерам в C#!
Заключение
В этой статье вы ознакомились с некоторыми из лучших библиотек HTML-парсинга на C#. Выбор подходящего инструмента зависит от уникальных требований вашего проекта. Здесь у вас была возможность изучить некоторые из лучших HTML-парсеров в среде .NET.
Независимо от вашего выбора, имейте в виду, что большинство сайтов используют технологии защиты от ботов, чтобы предотвратить загрузку их страниц с помощью встроенных HTTP-клиентов. К счастью, Bright Data вам поможет!
Наши ротационные прокси доступны в более чем 195 странах и работают с любым HTTP-клиентом для извлечения HTML-кода для анализа. Если же вы ищете полнофункциональное решение, Браузер для скрейпинга имеет встроенный HTML-парсер и может также обходить CAPTCHA, IP-баны и ограничения скорости. Анализируйте любой HTML-документ без каких-либо проблем!
Начните бесплатную пробную версию сегодня!