从ASP.NET中的URL获取文本

Nic*_*ick 9 c# asp.net

我正在寻找一种在ASP.NET/C#中提供给定Web地址的文本的可靠方法.谁能指出我正确的方向?

此外,网址可以说是一个可能有很多广告和菜单等的新闻网站.我需要一些只提取相关内容的智能方式.不知道如何做到这一点我将如何定义相关性?

我应该从RSS提要中读取吗?有什么想法吗?

编辑我添加了赏金.我希望从URL中提取"相关"文本.从"相关"我的意思是,它应该从广告(和其他不相关的信息)中排除文本.输入将类似于新闻网站.我只需要提取新闻信息并删除无关的文本

Mik*_*son 4

下载页面并开始使用 HTML Agility Pack 等库来解析 html 后,您的工作就开始了:)

屏幕抓取分为两部分。

首先是网络爬虫(网上有很多关于这方面的信息,以及其他一些答案通过 WebClient 提供的简单代码)。爬虫必须遍历链接并下载页面。如果您要下载大量页面并拥有起始网址,您可以自行创建或使用现有的页面。查看维基百科以获取开源网络爬虫/蜘蛛的列表。

第二部分是解析 html 并仅提取您想要的文本,并忽略任何噪音(页眉、横幅、页脚等)。使用现有库遍历 DOM 很容易,但弄清楚如何处理您解析的内容才是困难的部分。

我之前在另一个SO 问题上写过一些关于它的内容,它可能会给你一些如何手动获取你想要的内容的想法。根据我的经验,没有 100% 的方法可以找到页面的主要内容,而且通常您需要手动给它一些指示。困难的部分是,如果页面的 html 布局发生变化,那么你的屏幕抓取工具将开始失败。

您可以应用统计数据并比较多个页面的 html,以推断出广告、菜单等的位置,从而消除这些内容。

既然您提到了新闻网站,那么与从原始 html 中解析出文本相比,还有两种其他方法应该更容易应用于这些网站。

  1. 检查页面是否有打印网址。例如。CNN 上的链接有一个等效的打印 URL,更容易解析。
  2. 检查页面是否具有 RSS 表示形式,然后从 RSS 源中选择文章文本。如果提要没有包含所有内容,它应该为您提供足够的文本来在完整的 html 页面中找到该文本。

另请查看从任意 HTML 中提取有用文本的简单方法,了解如何创建更通用的解析器。代码是 Python 语言,但您应该能够轻松转换它。