我想阅读没有
HTML标签和标题的网站文本.我只需要在网络浏览器中显示的文字.
我不需要这样
<html> <body> bla bla </td><td> bla bla <body> <html>
我只需要文本“bla bla bla bla”.
我已经使用webclient和httpwebrequest方法来获取HTML内容并拆分接收的数据,但这是不可能的,因为如果我更改网站,标签可能会更改.
解决方法
以下是使用
HtmlAgilityPack的方法.
首先是您的示例HTML:
var html = "<html>\r\n<body>\r\nbla bla </td><td>\r\nbla bla \r\n<body>\r\n<html>";
加载它(在这种情况下为字符串):
var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html);
如果从网上获取,类似:
var web = new HtmlWeb(); var doc = web.Load(url);
现在只选择具有非空白的文本节点并修剪它们.
var text = doc.DocumentNode.Descendants() .Where(x => x.NodeType == HtmlNodeType.Text && x.InnerText.Trim().Length > 0) .Select(x => x.InnerText.Trim());
如果您愿意,可以将其作为单个连接字符串获取:
String.Join(" ",text)
当然,这只适用于简单的网页.任何复杂的东西也会返回你明确不想要的数据的节点,比如javascript函数等.