5

我发现Fizzler作为 html parser 和 jQuery like selector 。但似乎视觉工作室无法解决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();

我仍在为我的问题寻找好的答案。

4

5 回答 5

6

大概是这样的:

using Fizzler.Systems.HtmlAgilityPack;

也给 CsQuery 一个镜头,我的 C# jQuery 端口:https ://github.com/jamietre/CsQuery

var dom = CQ.CreateFromUrl(url);
var c = dom["div"];

.. 加上你从 jQuery 中习惯的一切。

于 2012-06-07T18:25:00.313 回答
3

老问题,但这有效:

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.

于 2014-02-18T14:53:44.927 回答
1

您很可能缺少对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");
于 2015-05-02T07:39:41.060 回答
0

如果使用 QuerySelectorAll 你应该创建一个数组来检查 div 是否不为空,然后你可以使用 queryselector

 HtmlNode[] test= html.DocumentNode.QuerySelectorAll("div.hlogo").ToArray();
      for (int rowcounter = 0; rowcounter < test.Count(); rowcounter++)
       {
      var logoname = test[rowcounter].QuerySelector("a").InnerText;    
       }
于 2014-04-04T14:42:54.430 回答
0

我有同样的问题并解决了。也许你犯了我同样的错误。我在一些配置文件中定义了程序集。当我删除所有并重新安装软件包时,一直运行良好。

  • 卸载 FizzlerFizzler.Systems.HtmlAgilityPack在 nuget 管理器中。
  • 从 bin 和 debug 文件夹中删除所有这些 dll。
  • 删除appconfig和webconfig中关于这些dll的所有依赖程序集
  • 在管理 nuget 包中安装最新版本的FizzlerFizzler.Systems.HtmlAgilityPack包。

    之后,您可以QuerySelectorAll在任何地方使用其他方法而不会出错。

不要单独安装 HtmlAgilityPack。当你安装 Fizzler 时,HtmlAgilityPack 会自动安装。

于 2016-11-14T11:00:32.613 回答