Fizzler and QuerySelectorAll
本文关键字:QuerySelectorAll and Fizzler | 更新日期: 2023-09-27 18:36:08
我发现Fizzler是html解析器,jQuery是选择器。但似乎视觉工作室无法解决QuerySelectorAll
方法。
这是我的代码:
using HtmlAgilityPack;
HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument document = web.Load(url);
var c = document.QuerySelectorAll('div');
我错过了任何参考资料吗?
编辑:经过一番搜索,我找到了使用Fizzler的代码
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
const string search = "td";
SelectorGenerator<HtmlNode> selectorGenerator1 = new SelectorGenerator<HtmlNode>(new HtmlNodeOps());
HumanReadableSelectorGenerator selectorGenerator2 = new HumanReadableSelectorGenerator();
Parser.Parse(search, new SelectorGeneratorTee(selectorGenerator1, selectorGenerator2));
var c = selectorGenerator1.Selector(Enumerable.Repeat(doc.DocumentNode, 1)).ToList();
我仍在为我的问题寻找好的答案。
大概是这个:
using Fizzler.Systems.HtmlAgilityPack;
也给CsQuery一个镜头,我的C# jQuery端口:https://github.com/jamietre/CsQuery
var dom = CQ.CreateFromUrl(url);
var c = dom["div"];
.. 加上你习惯的 jQuery 的所有内容。
老问题,但这有效:
using HtmlAgilityPack;
using Fizzler.Systems.HtmlAgilityPack;
var web = new HtmlWeb();
var document = web.Load("some-url");
var c = document.DocumentNode.QuerySelectorAll("div");
QuerySelectorAll
是 HtmlNode
类型的扩展方法,但您尝试在 HtmlDocument
上使用它。
您很可能缺少对Fizzler.Systems.HtmlAgilityPack
的引用
我建议添加这个 nuget 包。嘶嘶声
using Fizzler.Systems.HtmlAgilityPack;
using HtmlAgilityPack;
using HtmlDoc = HtmlAgilityPack.HtmlDocument;
然后你可以像这样使用它
var html = new HtmlDoc();
html.LoadHtml(HtmlText);
// Fizzler for HtmlAgilityPack is implemented as the
// QuerySelectorAll extension method on HtmlNode
var document = html.DocumentNode;
// yields: [<p class="content">Fizzler</p>]
document.QuerySelectorAll(".content");
如果使用 QuerySelectorAll,你应该创建一个数组来检查div 是否不为 null,然后你可以使用 queryselector
HtmlNode[] test= html.DocumentNode.QuerySelectorAll("div.hlogo").ToArray();
for (int rowcounter = 0; rowcounter < test.Count(); rowcounter++)
{
var logoname = test[rowcounter].QuerySelector("a").InnerText;
}
我遇到了同样的问题并解决了它。也许你犯了和我一样的错误。我已经在几个配置文件中定义了程序集。当我删除所有软件包并再次安装软件包时,效果很好。
- 卸载
Fizzler
,Fizzler.Systems.HtmlAgilityPack
在 nuget 管理器中。 - 从 bin 和调试文件夹中删除所有这些 dll。
- 删除所有关于这些 dll 的依赖程序集 appconfig 和 webconfig
-
在管理 nuget 包中安装最新版本的
Fizzler
和Fizzler.Systems.HtmlAgilityPack
包。之后,您可以在任何地方使用
QuerySelectorAll
和其他方法而不会出错。
不要只安装HtmlAgilityPack本身。当你安装Fizzler时,HtmlAgilityPack将自动安装。