Html Agility Packのヘルプ

c# html-agility-pack

質問

私はウェブサイトからいくつかの情報を削り取ろうとしていますが、私のために働く解決策を見つけることはできません。私がインターネットで読んだすべてのコードは、私にとって少なくとも1つのエラーを生成します。

ホームページのサンプルコードでさえ、私のためにエラーが発生します。

私のコード:

         HtmlDocument doc = new HtmlDocument();
         doc.Load("https://www.flashback.org/u479804");
         foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
         {
            HtmlAttribute att = link["href"];
            att.Value = FixLink(att);
         }
         doc.Save("file.htm");

次のエラーを生成します。

'HtmlDocument'は 'System.Windows.Forms.HtmlDocument'と 'HtmlAgilityPack.HtmlDocument' C:* \ Form1.csのあいまいな参照です

編集:私のコードはすべてここにあります: http : //beta.yapaste.com/55

すべてのヘルプは非常に高く評価されています!

受け入れられた回答

HtmlAgilityPack.HtmlDocument使用:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

usingてインポートした名前空間のうち2つに、 HtmlDocumentという名前のクラス(HTMLアジリティパック名前空間およびWindowsフォーム名前空間)が含まれているため、コンパイラが混乱しusingいます。これを回避するには、明示的に使用するクラスを指定します。


人気のある回答

これは私が達成した方法です。 foreachの行doc.DocumentElement.SelectNodes( "// a [@href"])に、メインのHtml Agility Packの例で示されているコードエラーがあることに注意してください。正しいものとテストされたものを以下に示します。

 HtmlWeb hw = new HtmlWeb();

    HtmlDocument doc = hw.Load(@"http://tipscow.com");
    StringBuilder sb = new StringBuilder();

    List<string> lstHref = new List<string>();

    foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]").Distinct())
    {
        string curHref = link.Attributes["href"].Value;

        if(!lstHref.Contains(curHref))
        lstHref.Add(curHref);

    }
    foreach (string str in lstHref)
    {
        sb.Append(str +"<br />");
    }

    Response.Write (sb.ToString());

それは私のために働いて以来、私は共有する必要があると思った。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ