首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS选择器在dotnetcore?

CSS选择器在dotnetcore?
EN

Stack Overflow用户
提问于 2016-11-19 04:22:38
回答 3查看 2.4K关注 0票数 1

我在.NET中使用.NET来使用CSS选择器获取元素。现在,我正在将我的项目移植到.NET核心,虽然HtmlAgilityPack.NetCore是可用的,但似乎没有什么问题。如何使用CSS选择器?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-26 09:39:03

只需将HtmlAgilityPack.CssSelectors.NetCore NuGet包引用添加到项目中即可。

下面是如何使用QuerySelectorAll()方法的示例。

代码语言:javascript
复制
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);

IList<HtmlNode> nodes = doc.QuerySelectorAll("div .my-class[data-attr=123] > ul li");
HtmlNode node = nodes[0].QuerySelector("p.with-this-class span[data-myattr]");

来源:https://github.com/trenoncourt/HtmlAgilityPack.CssSelectors.NetCore

票数 1
EN

Stack Overflow用户

发布于 2016-11-19 04:27:44

我使用HtmlAgilitypack的方式如下:

代码语言:javascript
复制
string url = "your URL";

                HtmlWeb web = new HtmlWeb();
                web.PreRequest = delegate (HttpWebRequest webRequest)
                {
                    webRequest.Timeout = 15000;
                    return true;
                };
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

List<HtmlNode> findclasses = doc.DocumentNode.Descendants("div").Where(d =>
        d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("YourClassName")
    ).ToList();
票数 0
EN

Stack Overflow用户

发布于 2016-11-24 08:22:30

对于.NET中的CSS选择器,我总是使用ScrapySharp (尽管它不支持伪元素)。

ScrapySharp.Extensions添加到使用语句中,只需在任何HtmlNode对象(如DocumentNode )中调用CssSelect

代码语言:javascript
复制
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使用示例:

代码语言:javascript
复制
    //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");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40689181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档