dotnetcoreのCSSセレクタ?

.net-core c# html-agility-pack

質問

私はFizzler.Systems.HtmlAgilityPack;を使用していFizzler.Systems.HtmlAgilityPack; .NETでCSSセレクタを使用して要素を取得します。今は私のプロジェクトを.NETコアに移植していますが、HtmlAgilityPack.NetCoreは利用可能ですが、Fizzlerのようには見えません。 CSSセレクタを使用するには?

受け入れられた回答


人気のある回答

.NETのCSSセレクタでは、 ScrapySharpを常に使用していました (ただし、疑似要素はサポートしていません)。

使用しているステートメントにScrapySharp.Extensionsを追加します。必要なのは、 DocumentNodeなどのHtmlNodeオブジェクトで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を使用することです。これは解析と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");


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ