Html Agility Pack幫助

c# html-agility-pack

我試圖從網站上抓取一些信息,但找不到適合我的解決方案。我在Internet上閱讀的每個代碼都會為我生成至少一個錯誤。

即使他們主頁上的示例代碼也會為我生成錯誤。

我的代碼:

         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含有類調用HtmlDocument -的HTML敏捷性包命名空間,Windows窗體的命名空間。您可以通過指定要明確使用的類來解決此問題。


熱門答案

這就是我的成就。請注意,在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合法嗎? 是的,了解原因