Html Agility Pack帮助

时间:2010-10-18 20:46:50

标签: c# html-agility-pack

我正试图从网站上搜集一些信息,但找不到适合我的解决方案。我在互联网上阅读的每个代码都会为我产生至少一个错误。

即使他们主页上的示例代码也会给我带来错误。

我的代码:

         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

非常感谢所有帮助!

4 个答案:

答案 0 :(得分:9)

使用HtmlAgilityPack.HtmlDocument

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

编译器变得困惑,因为您使用using导入的两个名称空间包含名为HtmlDocument的类 - HTML Agility Pack名称空间和Windows窗体名称空间。您可以通过指定要明确使用的类来解决此问题。

答案 1 :(得分:4)

这就是我取得的成就。请注意,foreach行doc.DocumentElement.SelectNodes(“// a [@href”])中的主Html Agility Pack Example中给出了代码错误。下面给出了正确的和经过测试的。

 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());

因为它为我工作,我想我应该分享。

答案 2 :(得分:2)

两个名称空间System.Windows.FormsHtmlAgilityPack中的类是冲突的。使用完全限定的类型名称或使用名称空间别名。

答案 3 :(得分:1)

我写了几篇解释如何使用HtmlAgilityPack的文章。您可能会发现它们对入门很有用:

警告(2012-06-08):这个链接有点垃圾 - 狡猾的pop-under广告,内容不多。

我不知道他们现在是否已修复它但该片段不常用于网站的主页,我认为它来自该库的早期版本。此外,该代码段还没有定义FixLink(),因此即使它对库是正确的也不会起作用。

我建议获取该库的最新测试版,因为它有额外的扩展来执行对它的linq查询,这可以避免以后混淆xpath查询。

我之前没有在Windows窗体应用程序中看到它,但看起来你必须使用完全限定的类型名称,如:

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

至于你想要执行的实际任务,似乎你想要一个网址,注入一个用户名和id,然后......不确定?您似乎都在尝试将文件保存到磁盘并将html代码设置为我认为您无法执行的表单内容?