Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Html敏捷包帮助_C#_Html Agility Pack - Fatal编程技术网

C# Html敏捷包帮助

C# Html敏捷包帮助,c#,html-agility-pack,C#,Html Agility Pack,我试图从网站上搜集一些信息,但找不到适合我的解决方案。我在互联网上读到的每一个代码都会为我产生至少一个错误 甚至他们主页上的示例代码也会为我产生错误 我的代码: HtmlDocument doc = new HtmlDocument(); doc.Load("https://www.flashback.org/u479804"); foreach(HtmlNode link in doc.DocumentElement.SelectNodes

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

甚至他们主页上的示例代码也会为我产生错误

我的代码:

         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之间的不明确引用

编辑:我的整个代码位于此处:


非常感谢您的帮助

使用
HtmlAgilityPack.HtmlDocument

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

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

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

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

警告(2012-06-08):此链接有点垃圾——在广告下有点冒失,内容不多。

我不知道他们现在是否已经修复了它,但是这个片段在网站的主页上不起作用,我想它来自于图书馆的早期版本。此外,该代码段没有定义FixLink(),因此即使它对于库是正确的,它也无法工作

我建议您使用该库的最新beta版本,因为它有额外的扩展,可以对其执行linq查询,这样可以避免您以后混淆xpath查询

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

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

至于您正在尝试执行的实际任务,似乎您希望获取一个url,将用户名和id插入其中,然后。。。不确定?看起来你们都在试图将文件保存到磁盘,并将html代码设置为表单的内容,而我认为你们做不到这一点?

我就是这样做到的。请注意,在foreach行doc.DocumentElement.SelectNodes(“//a[@href”])的main中给出了一个代码错误。下面给出了正确且经过测试的方法

 HtmlWeb hw = new HtmlWeb();

    HtmlDocument doc = hw.Load(@"http://adityabajaj.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());
HtmlWeb hw=new HtmlWeb();
HtmlDocument文档=硬件加载(@)http://adityabajaj.com");
StringBuilder sb=新的StringBuilder();
List lstHref=新列表();
foreach(doc.DocumentNode.SelectNodes(“//a[@href]”).Distinct()中的HtmlNode链接)
{
字符串curHref=link.Attributes[“href”].Value;
如果(!lstHref.Contains(curHref))
lstHref.Add(curHref);
}
foreach(lstHref中的字符串str)
{
sb.追加(str+“
”); } 写(某人写的东西);

因为它对我有效,我想我应该分享。

然后我得到另一个错误:“HtmlAgilityPack.HtmlDocument”不包含“DocumentElement”的定义,并且找不到接受“HtmlAgilityPack.HtmlDocument”类型的第一个参数的扩展方法“DocumentElement”(是否缺少using指令或程序集引用?)@维克多:我不太确定库的确切布局,但我确实看到了示例代码。从该页面底部的右侧注释中,您可能希望尝试
DocumentNode
,而不是
DocumentElement
。不过,这有点遥不可及……嗯……我不确定。c似乎没有任何问题您粘贴的ode…可能其他地方有错误?是否有其他方法可以使用C#从网站获取信息?您使用的库是我所知道的做您想做的事情的最佳方法…您可以尝试创建一个新项目,只做使示例代码正常工作所需的最低限度的工作。或者,如果它包含完整的sample应用程序,看看你的代码和它的代码之间是否有任何差异。这对我没有太大帮助,你能改进一下我应该做些什么吗?正如我在下面的回复中提到的,我真的不能告诉你你正在尝试做什么。如果你能更详细地描述你正在尝试完成的任务,我会尝试帮助你编写一个sampl我想你可以用“htmlalitypack.HtmlDocument”而不是“HtmlDocument”来关闭编译器。啊,是“using HtmlDocument=System.Windows.Forms.HtmlDocument;”以某种方式“神奇地”已添加到我的usings子句中,该子句模糊了HtmlDocument类的HtmlAlityPack版本。@tomfanning-感谢您的通知,其中一个小部件似乎在向用户发送垃圾邮件。我已删除PostRank和Blogged.com小部件,不再看到垃圾邮件弹出窗口。