使用html敏捷包查看C#html

本文关键字:包查看 C#html html 使用 | 更新日期: 2023-09-27 18:20:49

我制作了一个控制台c#应用程序,它应该显示页面的html源代码。

相反,控制台应用程序显示HtmlAgilityPack.HtmlDocument

有人能向我解释为什么吗?

class Program
{
    public HtmlDocument read()
    {
        HtmlWeb htmlWeb = new HtmlWeb();
        try
        {
            HtmlAgilityPack.HtmlDocument document = htmlWeb.Load("http://www.yahoo.com");
            return document;
        }
        catch (Exception e)
        {
            Console.WriteLine("Error : " + e.ToString());
            return null;     
        }
    }     
    static void Main(string[] args)
    {
        Program dis = new Program();
        string text = Convert.ToString(dis.read());
        Console.WriteLine(text);
        Console.ReadLine();        
    }
}

使用html敏捷包查看C#html

替换

 return document;

带有:

 return document.DocumentNode.InnerHtml;

或者如果你只想提取文本(不带HTML标签):

 return document.DocumentNode.InnerText;

整个代码将是:

class Program
{
    public string read()
    {
        HtmlWeb htmlWeb = new HtmlWeb();
        try
        {
            HtmlAgilityPack.HtmlDocument document = htmlWeb.Load("http://www.yahoo.com");
            return document.DocumentNode.InnerHtml;
        }
        catch (Exception e)
        {
            Console.WriteLine("Error : " + e.ToString());
            return null;     
        }
    }     
    static void Main(string[] args)
    {
        Program dis = new Program();
        string text = dis.read();
        Console.WriteLine(text);
        Console.ReadLine();        
    }
}

.ToString()的默认实现只是输出类的名称,这就是您所看到的。因此,HtmlAgilityPack中的HtmlDocument显然没有提供派生实现。

从CodePlex上的代码来看,您似乎需要使用Save函数将输出保存到XmlWriter,然后使用它来获取字符串。我看不出有其他方法可以直接从该对象获取页面的全部内容(尽管无可否认,我只是扫描了它)。

编辑:Amine Hajyoussef用document.DocumentNode.Innerhtml为您指明了正确的方向,但请注意,您还需要更改函数的返回类型。