Sélecteur CSS dans dotnetcore?

.net-core c# html-agility-pack

Question

J'utilisais Fizzler.Systems.HtmlAgilityPack; dans .NET pour obtenir des éléments à l'aide de sélecteurs CSS. Maintenant, je porte mon projet sur le noyau .NET et il ne semble pas y avoir de Fizzler bien que HtmlAgilityPack.NetCore soit disponible. Comment utiliser les sélecteurs CSS?

Réponse acceptée


Réponse populaire

Pour les sélecteurs CSS dans .NET, j’ai toujours utilisé ScrapySharp (bien qu’il ne supporte pas les pseudo-éléments).

Ajoutez ScrapySharp.Extensions à vos instructions using et il vous suffit d'appeler CssSelect dans tout objet HtmlNode, tel que 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");
        }
    }
}

Une solution alternative consiste à utiliser AngleSharp , un package tout-en-un pour l'analyse syntaxique et la sélection CSS (des sélecteurs CSS sont intégrés). Cela fait un moment que je ne les utilise pas, mais si je ne me trompe pas, le pointu offre un meilleur support pour le sélecteur css.

Anglesharp utilisation d' 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");



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi