C# CSS选择器。从两个名称相似的类中选择一个
我尝试使用AngleSharpe解析网站,我有以下情况:C# CSS选择器。从两个名称相似的类中选择一个,c#,css,anglesharp,C#,Css,Anglesharp,我尝试使用AngleSharpe解析网站,我有以下情况: <div class="list another"> <div class="item1"></div> <div class="item2"></div> </div> ... <div class="list"> <div class="item1"></div> <div class="item2"&
<div class="list another">
<div class="item1"></div>
<div class="item2"></div>
</div>
...
<div class="list">
<div class="item1"></div>
<div class="item2"></div>
</div>
我尝试使用以下各种方法:
"div[class$=list]"
"div.list"
当我对“list”的父类使用选择器时,它不同于“list-other”的父类,比如“parent-class>list”,我什么也得不到
请告诉我如何正确,或在必要时查看以解决此问题尝试此操作,使用class.list选择所有dom元素,但不使用class.other。因此,您将能够以独占方式选择第二个div
document.querySelectorAll(".list:not(.another)");
正如其他人提到的,您可以完全使用CSS选择器:
var config=Configuration.Default;
//注意:理想情况下,如果适用,直接从URL加载文档
var document=await BrowsingContext.New(配置)
.OpenAsync(res=>res.Content(@)
测试文件
"));
document.QuerySelector(“.list:not(.other)”).ClassList.Dump();
上面的代码使用LINQPad(请参见Dump()
),使用AngleSharp 0.14
请注意,这不同于仅使用。list
:
最后,您可以利用queryselectoral
并在后面放置LINQ
要确认,检查具有列表的所有元素如下所示:
document.QuerySelectorAll(“.list”).Select(m=>m.ClassList.Dump();
我们到哪里去了
例如,以下工作:
文档
.QuerySelectorAll(“列表”)
.Where(m=>m.ClassList.Count()==1)
.Select(m=>m.ClassList)
.FirstOrDefault()
.Dump()
这给了我们与上面的选择器完全相同的.list:not(.other)
,尽管它有更多的约束(它不知道哪些其他类不应该出现,只确保只放置了所需的类)
希望有帮助 非常感谢大家!它不起作用,因为我并没有注意到这个类正在通过浏览器中的脚本进行更改。因为这个课程在安格尔夏普不可用。我找到了“非脚本”部分。是您的要求-您想从dom中选择第二个出现的列表吗?是的,这是我的要求将父类作为另一个列表提供。这里两个div具有相同的类名-list。第一个是列表,另一个是类。两者都是单独的类,返回0个元素。这很奇怪。这可能是AngleSharpconsole.log的一项功能outputAfter查询变量不包含元素。需要额外的调试吗
document.querySelectorAll(".list:not(.another)");