使用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();
}
}
替换
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
为您指明了正确的方向,但请注意,您还需要更改函数的返回类型。