CSS-селектор в dotnetcore?

.net-core c# html-agility-pack

Вопрос

Я использовал Fizzler.Systems.HtmlAgilityPack; в .NET для получения элементов с помощью селекторов CSS. Теперь я переношу свой проект на ядро ​​.NET, и, похоже, нет Fizzler, хотя доступен HtmlAgilityPack.NetCore. Как использовать селектор CSS?

Принятый ответ

Используйте HtmlAgilityPack.CssSelectors.NetCore


Популярные ответы

Для селекторов CSS в .NET я всегда использовал ScrapySharp (хотя он не поддерживает псевдоэлементы ).

Добавьте ScrapySharp.Extensions в ваши операторы using, и все, что вам нужно, - вызвать CssSelect в любом объекте HtmlNode, таком как DocumentNode .

using ScrapySharp.Extensions;
using HtmlAgilityPack;

namespace ConsoleLab
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            HtmlWeb web = new HtmlWeb();
            var document = web.Load("your url");
            //css class selector example
            var res1 = document.DocumentNode.CssSelect(".yourClass");
            //css id selector example
            var res2 = document.DocumentNode.CssSelect("#yourID");
        }
    }
}

Альтернативным решением является использование AngleSharp - это пакет «все-в-одном» для синтаксического анализа и выбора css (встроены css-селектора). Прошло некоторое время с тех пор, как я их использую, но если я не ошибаюсь, то угол резкости дает лучшую поддержку селектора CSS.

Anglesharp использования Anglesharp :

    //parsing a http-served url (asynchronous, used .Result here for simplification, but this defeats the asynchronoability of the code)
    IBrowsingContext bc = BrowsingContext.New();
    Task<IDocument> doc = bc.OpenAsync("yourAddress");
    //querying a single selector match
    IElement element1 = doc.Result.QuerySelector(".yourSelector");
    //querying multiple selector matches
    IEnumerable<IElement> elements1 = doc.Result.QuerySelectorAll(".yourSelectors");

    //parsing a physical html document, non-network dependent
    HtmlParser parser = new HtmlParser();
    IHtmlDocument doc2 = parser.Parse("htmlFile");
    IElement element2 = doc.Result.QuerySelector(".yourSelector");
    IEnumerable<IElement> elements2 = doc.Result.QuerySelectorAll(".yourSelectors");


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему