Anglesharp-это библиотека .NET, которая дает вам возможность проанализировать гиперсекс на основе угловых кронштейнов, такие как HTML, SVG и Mathml. XML без проверки также поддерживается библиотекой. Важным аспектом Anglesharp является то, что CSS также может быть проанализирован. Включенный анализатор построен на официальной спецификации W3C. Это создает совершенно портативное представление HTML5 DOM данного исходного кода и обеспечивает совместимость с результатами в вечнозеленых браузерах. Также стандартные функции DOM, такие как querySelector или querySelectorAll Work для обхода деревьев.
⚡⚡ Мигрируя из Anglesharp 0,9 в Anglesharp 0,10 или более поздней версии (в том числе 1,0)? Посмотрите на нашу миграционную документацию. ⚡⚡
BrowsingContext похож на вкладку браузера - контролируйте ее от .net!). Преимущество по сравнению с аналогичными библиотеками, такими как htmlagilitypack, заключается в том, что открытый DOM использует официальный W3C, указанный API, то есть, что даже такие вещи, как querySelectorAll доступны в Anglesharp. Также анализатор использует спецификацию HTML 5.1, которая определяет обработку ошибок и коррекцию элементов. Библиотека Anglesharp фокусируется на соблюдении стандартов, интерактивности и расширяемости. Поэтому он дает веб -разработчикам работать с C# все возможности, как они знают из использования DOM в любом современном браузере.
Производительность Anglesharp довольно близок к производительности браузеров. Даже очень большие страницы могут быть обработаны в течение миллисекунды. Anglesharp пытается свести к минимуму распределения памяти и повторно использует элементы внутренне, чтобы избежать ненужного создания объекта.
Простой пример будет использовать веб -сайт Википедии для поиска данных.
var config = Configuration . Default . WithDefaultLoader ( ) ;
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
var context = BrowsingContext . New ( config ) ;
var document = await context . OpenAsync ( address ) ;
var cellSelector = "tr.vevent td:nth-child(3)" ;
var cells = document . QuerySelectorAll ( cellSelector ) ;
var titles = cells . Select ( m => m . TextContent ) ;Или то же самое с явными типами:
IConfiguration config = Configuration . Default . WithDefaultLoader ( ) ;
string address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
IBrowsingContext context = BrowsingContext . New ( config ) ;
IDocument document = await context . OpenAsync ( address ) ;
string cellSelector = "tr.vevent td:nth-child(3)" ;
IHtmlCollection < IElement > cells = document . QuerySelectorAll ( cellSelector ) ;
IEnumerable < string > titles = cells . Select ( m => m . TextContent ) ;В примере мы видим:
Каждая коллекция в Anglesharp поддерживает операторы LINQ. Anglesharp также предоставляет много полезных методов расширения для коллекций элементов, которые не могут быть найдены в официальном DOM.
Anglesharp был создан как стандартная библиотека, совместимая с стандартом 2.0. Это включает, но не ограничивается:
Документация Anglesharp находится в папке Docs. Там можно найти больше примеров, лучших практик и общей информации. Документация также содержит список часто задаваемых вопросов.
Более подробная информация также доступна, следуя некоторым гипер -ссылкам, упомянутым в вики. Углубленные статьи будут опубликованы на CodeProject, причем ссылки размещаются в вики в GitHub.
Проект направлен на то, чтобы обеспечить надежную реализацию W3C DOM для HTML, SVG, MathML и CSS в CLR - все написанные в C#. Идея состоит в том, что вы можете в основном делать все с DOM в C#, который вы можете сделать в JavaScript (плюс, конечно, больше).
Большинство частей DOM включены, хотя некоторые могут все еще пропустить свою (полностью указанную / правильную) реализацию. Цель V1.0 состоит в том, чтобы все практически соответствующие детали внедрили в соответствии с официальной спецификацией W3C (с полезными расширениями WhatWG).
API находится близко к спецификации DOM4, однако именование было скорректировано для применения с соглашениями .NET. Тем не менее, чтобы сделать Anglesharp действительно полезным для, например, двигателя JavaScript, атрибуты были размещены на соответствующих интерфейсах (и методах, свойствах, ...), чтобы указать статус поля в официальной спецификации. Это позволяет автоматическому генерированию объектов DOM с официальным API.
Это долгосрочный проект, который в конечном итоге приведет к тому, что состояние анализатора искусства для наиболее важных гипер-актов на основе угловых кронштейнов.
Мы надеемся построить сообщество вокруг веб -разбора и библиотек из этого проекта. До сих пор у нас был большой вклад, но эта цель не была полностью достигнута. Хотите помочь? Свяжитесь с нами!
Если вы знаете какую -то функцию, которую в настоящее время отсутствует Anglesharp, и вы готовы реализовать эту функцию, то ваш вклад более чем приветствуется! Кроме того, если у вас есть действительно крутая идея - не стесняйтесь, мы хотели бы услышать ее.
Если у вас есть идея, как улучшить API (или то, что отсутствует), то также приветствуются сообщения / сообщения. Например, продолжались обсуждения о некоторых стилях, которые в прошлом использовались Anglesharp (например, HTMLDocument или HtmlDocument ). В конце концов, Anglesharp прекратил использование HTMLDocument (по крайней мере, виден за пределами библиотеки). Теперь Anglesharp использует такие имена, как IDocument , IHtmlElement и так далее. Это изменение было бы невозможно без таких плодотворных дискуссий.
Проект всегда ищет дополнительных участников. Даже если у вас нет кода для внесения вклад, а скорее идея для улучшения, отчет об ошибке или ошибка в документации. Это вклады, которые поддерживают этот проект активным.
Живые дискуссии могут проходить в нашем чате Gitter, который поддерживает использование учетных записей Github.
Более подробная информация обнаруживается в руководящих принципах вклада. Все участники можно найти в файле участников.
Этот проект также принял Кодекс поведения, определяемый Заветом участника, чтобы прояснить ожидаемое поведение в нашем сообществе.
Для получения дополнительной информации см. Код поведения .NET .NET.
Если вы часто используете Anglesharp, но у вас нет времени для поддержки проекта с помощью активного участия, вам все равно может быть заинтересован, чтобы гарантировать, что проекты Anglesharp сохраняют свет.
Поэтому мы создали модель поддержки через Bountysource. Любое пожертвование приветствуется и очень ценится. В основном мы будем тратить деньги на специальное время разработки, чтобы улучшить Anglesharp, где его необходимо улучшить, плюс инвестировать в экосистему в веб-утилите в .NET (например, в двигателях JavaScript, других анализаторах или визуализаторе для Anglesharp, чтобы упомянуть некоторые выдающиеся проекты).
Посетите Bountysource для получения более подробной информации.
Anglesharp написан в самой последней версии C# и, таким образом, требует Рослина в качестве компилятора. Использование IDE, подобного Visual Studio 2019+, рекомендуется в Windows. В качестве альтернативы, VSCODE (с Omnisharp или другой подходящей реализацией протокола языкового сервера) должен быть инструментом выбора на других платформах.
Код старается быть максимально чистым. Примечательно, что используются следующие правила:
-Async , когда доступноОднако более важным является правильное использование тестов. Любая новая функция должна поставляться с набором тестов, чтобы охватить функциональность и предотвратить регрессию.
Существует очень подробный вариант изменений. Если вы просто заинтересованы в крупных выпусках, посмотрите на выпуски GitHub.
Этот проект поддерживается Фондом .NET.
Anglesharp выпускается с использованием лицензии MIT. Для получения дополнительной информации см. Файл лицензии.