我一直在尝试设置FizzlerEx,在http://fizzlerex.codeplex.com/找到。在添加对项目的引用之后,我试图运行网站上给出的示例代码 - 我的代码全部列在下面。
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;
}
}
}
但是,这会产生构建错误,声称:
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
答案 0 :(得分:4)
看起来QuerySelectorAll实际上并不是HtmlNode的一部分,但鉴于这是官方的示例代码 从网站逐字逐句,我希望创作者理解如何 他们的图书馆工作我不知道实际问题是什么 是
你对这部分是正确的。虽然你对第二部分不正确,但由于HAP的作者不是FizzlerEx的作者。问题出在其他地方。 只需查看错误,您就可以获得解决此问题所需的唯一线索。
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
中没有名为HtmlAgilityPack
的方法。如果我们看一下HAP的源代码,您可以轻松确定错误消息确实是正确的,因为在我们正在查找的类中没有该名称的方法。
Source code for HtmlAgilityPack.HtmlNode - class
我们想要使用哪种方法,但找不到?
here,Fizzler.Systems.HtmlAgilityPack.HtmlNodeSelection
- 类。
在尝试了一些事情后,我让代码完全正常工作。问题是Fizzler和HAP源代码之间的引用扩展。
如果你下载Fizzler,你会同时获得HtmlAgilityPack。在Visual Studio中添加引用时(假设您使用它),只添加
清理您的解决方案并重建它,它应该可以工作!
答案 1 :(得分:2)
您应该通过右键点击参考添加Fizzler - >管理Nuget Package,在线搜索它,你会发现它是HizzAgilityPack的Fizzler,然后可以下载它。