dotnetcore의 CSS 선택 도구?

.net-core c# html-agility-pack

문제

나는 Fizzler.Systems.HtmlAgilityPack; 을 사용하고 Fizzler.Systems.HtmlAgilityPack; .NET에서 CSS 선택기를 사용하여 요소를 가져옵니다. 이제는 .NET 코어로 프로젝트를 포팅하고 HtmlAgilityPack.NetCore를 사용할 수 있지만 Fizzler가없는 것 같습니다. CSS 선택기는 어떻게 사용합니까?


인기 답변

.NET의 CSS 선택기의 경우 ScrapySharp를 항상 사용 했습니다 (의사 요소는 지원하지 않음).

using 문에 ScrapySharp.Extensions 를 추가하면 필요한 모든 HtmlNode 객체 (예 : DocumentNode 에서 CssSelect 를 호출 CssSelect 됩니다.

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 를 사용하는 것입니다. AngleSharp 는 구문 분석 및 CSS 선택을위한 올인원 패키지입니다 (CSS 선택기가 내장되어 있음). 나가 이것을 사용하기 때문에, 그러나 나가 틀린 경우에 날카로운 경우에 날카로운 제안 더 나은 CSS 선택자 지원을이다.

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
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.