首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FizzlerEx/HtmlAgilityPack QuerySelectorAll不工作

FizzlerEx/HtmlAgilityPack QuerySelectorAll不工作
EN

Stack Overflow用户
提问于 2013-10-17 04:38:16
回答 2查看 3K关注 0票数 1

我一直在尝试设置http://fizzlerex.codeplex.com/上的FizzlerEx。在将引用添加到我的项目后,我尝试运行网站上给出的示例代码-下面列出了我的全部代码。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;
using Fizzler.Systems.HtmlAgilityPack;


namespace Fizzler_Test
{
    class Program
    {

        static void Main(string[] args)
        {
        var web = new HtmlWeb();
            var document = web.Load("http://example.com/page.html");
            var page = document.DocumentNode;

            foreach (var item in page.QuerySelectorAll("div.item"))
            {
                var title = item.QuerySelector("h3:not(.share)").InnerText;
                var date = DateTime.Parse(item.QuerySelector("span:eq(2)").InnerText);
                var description = item.QuerySelector("span:has(b)").InnerHtml;
            }
        }
}

但是,这会产生构建错误,并声称:

代码语言:javascript
复制
Error   1   'HtmlAgilityPack.HtmlNode' does not contain a definition for 'QuerySelectorAll' and no extension method 'QuerySelectorAll' accepting a first argument of type 'HtmlAgilityPack.HtmlNode' could be found (are you missing a using directive or an assembly reference?)

看起来QuerySelectorAll实际上并不是HtmlNode的一部分,但鉴于这是从网站上逐字摘取的官方示例代码,我希望创建者了解他们的库是如何工作的。我不知道真正的问题是什么。

这里似乎发现了一个相关的问题,但没有找到合适的答案:Fizzler and QuerySelectorAll

EN

回答 2

Stack Overflow用户

发布于 2013-10-18 03:47:18

看起来QuerySelectorAll实际上并不是HtmlNode的一部分,但鉴于这是从网站上逐字摘取的官方示例代码,我希望创建者了解他们的库是如何工作的。我不知道真正的问题是什么。

你对这一部分的看法是正确的。尽管你对第二部分的理解不正确,因为HAP的作者并不是FizzlerEx的作者。问题出在别处。只需查看错误,您就可以获得解决此问题所需的唯一线索。

代码语言:javascript
复制
Error   1   'HtmlAgilityPack.HtmlNode' does not contain a definition for 'QuerySelectorAll' and no extension method 'QuerySelectorAll' accepting a first argument of type 'HtmlAgilityPack.HtmlNode' could be found (are you missing a using directive or an assembly reference?)

那么,我们得到了什么;它告诉我们在名称空间HtmlAgilityPackHtmlNode类中没有名为QuerySelectorAll的方法。如果我们看一下HAP的源代码,您可以很容易地确定错误消息确实是正确的,因为我们正在查找的类中没有使用该名称的方法。

Source code for HtmlAgilityPack.HtmlNode - class

我们想要使用但找不到的方法在哪里?

我是Fizzler.Systems.HtmlAgilityPack.HtmlNodeSelection-class里的here

在尝试了一些东西之后,我让代码按原样完美地工作。问题在于Fizzler和HAP源代码之间的参考扩展。

如果你下载了Fizzler,你会同时得到HtmlAgilityPack。当您在Visual Studio中添加引用时(假设您使用它),只需添加

  • Fizzler.Systems.HtmlAgilityPack.dll
  • HtmlAgilityPack.dll

清理您的解决方案并重新构建它,它应该可以工作!

票数 4
EN

Stack Overflow用户

发布于 2015-03-19 05:00:58

你应该通过右击references -> Manage Nuget Package来添加Fizzler,然后在线搜索它,你会发现它是HtmlAgilityPack的Fizzler,然后可以下载它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19413392

复制
相关文章

相似问题

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