加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何阅读c#中的网站内容?

发布时间:2020-12-15 08:03:38 所属栏目:百科 来源:网络整理
导读:我想阅读没有 HTML标签和标题的网站文本.我只需要在网络浏览器中显示的文字. 我不需要这样 htmlbodybla bla /tdtdbla bla bodyhtml 我只需要文本“bla bla bla bla”. 我已经使用webclient和httpwebrequest方法来获取HTML内容并拆分接收的数据,但这是不可能
我想阅读没有 HTML标签和标题的网站文本.我只需要在网络浏览器中显示的文字.

我不需要这样

<html>
<body>
bla bla </td><td>
bla bla 
<body>
<html>

我只需要文本“bla bla bla bla”.

我已经使用webclient和httpwebrequest方法来获取HTML内容并拆分接收的数据,但这是不可能的,因为如果我更改网站,标签可能会更改.

那么有没有办法只能以网页方式获取网站上显示的文字?

解决方法

以下是使用 HtmlAgilityPack的方法.

首先是您的示例HTML:

var html = "<html>rn<body>rnbla bla </td><td>rnbla bla rn<body>rn<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函数等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读