私はhttp://fizzlerex.codeplex.com/にある FizzlerExを設定しようとしています。私のプロジェクトへの参照を追加した後、私はウェブサイトで与えられたサンプルコードを実行しようとしました。私のコード全体が以下にリストされています。
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とQuerySelectorAll
QuerySelectorAllは実際にはHtmlNodeの一部ではないようですが、これが公式のサンプルコードでウェブサイトからそのまま受け継がれていることを考えると 、クリエイターはライブラリの仕組みを理解することができます。私は実際の問題が何であるかについて、迷っています。
あなたはこの部分について正しいです。 HAPの著者はFizzlerExの著者ではないので、第2の部分については正しくありませんが。問題は他のところです。単にエラーを見るだけで、これを解決するために必要な唯一の手掛かりが得られます。
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のソースコードを見れば、見ているクラスにその名前のメソッドがないため、エラーメッセージが本当に正しいかどうかを簡単に判断できます。
HtmlAgilityPack.HtmlNode - クラスのソースコード
この方法はどこで使いたいのですが、見つけられませんか?
それはですここでは、 Fizzler.Systems.HtmlAgilityPack.HtmlNodeSelection
-class。
いくつかのことを試した後、そのままコードを完璧に動かすことができます。問題は、FizzlerとHAPのソースコードの間の参照の拡張です。
Fizzlerをダウンロードすると同時にHtmlAgilityPackが得られます。 Visual Studioで参照を追加すると(それを使用していると仮定します)、
あなたのソリューションをきれいにして再構築してください!