Selector de CSS en dotnetcore?

.net-core c# html-agility-pack

Pregunta

Estaba usando Fizzler.Systems.HtmlAgilityPack; en .NET para obtener elementos utilizando selectores de CSS. Ahora estoy transfiriendo mi proyecto a .NET core y no parece haber un Fizzler, aunque HtmlAgilityPack.NetCore está disponible. ¿Cómo uso los selectores de CSS?


Respuesta popular

Para los selectores de CSS en .NET, siempre usé ScrapySharp (aunque no admite pseudo-elementos).

Agregue ScrapySharp.Extensions a sus declaraciones de uso, y todo lo que necesita es invocar CssSelect en cualquier objeto HtmlNode, como 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 solución alternativa es usar AngleSharp , que es un paquete todo en uno para el análisis y la selección de css (los selectores de css están integrados). Ha pasado un tiempo desde que uso estos, pero si no estoy equivocado, Sharp sharp ofrece un mejor soporte del selector CSS.

Anglesharp uso de 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

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué