C#-Html敏捷包-can';t从网上阅读
本文关键字:-can C#-Html | 更新日期: 2023-09-27 18:29:54
我正试图制作一个小程序来读取维基百科页面上的内容,为了获得html,我在SO 的其他地方找到了这段代码
HtmlDocument doc = new HtmlDocument();
StringBuilder output = new StringBuilder();
doc.LoadHtml("http://en.wikipedia.org/wiki/The Metamorphosis of Prime Intellect");
var text = doc.DocumentNode.SelectNodes("//body//text()").Select(node => node.InnerText);
foreach (string line in text)
output.AppendLine(line);
string textOnly = HttpUtility.HtmlDecode(output.ToString());
Console.WriteLine(textOnly);
然而,我得到了一个运行时错误"ArgumentNullException未处理",这一行突出显示:
var text = doc.DocumentNode.SelectNodes("//body//text()").Select(node => node.InnerText);
有人看到问题了吗?
doc.LoadHtml
采用html字符串而不是url。要下载该页面,您可以使用HtmlAgilityPack.HtmlWeb
类
var web = new HtmlAgilityPack.HtmlWeb();
var doc = web.Load("http://en.wikipedia.org/wiki/The Metamorphosis of Prime Intellect");
var text = doc.DocumentNode.SelectNodes("//body//text()").Select(node => node.InnerText);
var output = String.Join("'n", text);
SelectNodes
在我的测试中返回622个项目。
您需要自己执行下载。
例如,可以使用System.Net
命名空间中的WebClient
类:
var pageUri = new Uri("http://en.wikipedia.org/wiki/The Metamorphosis of Prime Intellect");
var wc = new WebClient();
var html = wc.DownloadString(uri);
//Then do
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
如果您愿意的话,还有一个HttpClient
类。
与HtmlWeb
相比,它们有一个优势,即您可以在EAP和C#5 async
操作中使用它们。