Selettore CSS in dotnetcore?

.net-core c# html-agility-pack

Domanda

Stavo usando Fizzler.Systems.HtmlAgilityPack; in .NET per ottenere elementi usando selettori CSS. Ora sto trasferendo il mio progetto su .NET core e non sembra esserci un Fizzler nonostante sia disponibile HtmlAgilityPack.NetCore. Come uso i selettori CSS?

Risposta accettata


Risposta popolare

Per i selettori CSS in .NET, ho sempre usato ScrapySharp (anche se non supporta pseudo-elementi).

Aggiungi ScrapySharp.Extensions alle tue istruzioni using e tutto ciò che serve è richiamare CssSelect in qualsiasi oggetto HtmlNode, come 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");
        }
    }
}

Una soluzione alternativa è usare AngleSharp - che è un pacchetto tutto in uno per l'analisi e la selezione css (i selettori di css sono integrati). È passato un po 'di tempo da quando li uso, ma se non ho sbagliato l'angolo nitido offre un migliore supporto per i selettori di CSS.

Anglesharp utilizzo di 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");


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché