首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ASP.NET中的URL获取文本

从ASP.NET中的URL获取文本
EN

Stack Overflow用户
提问于 2010-02-13 02:47:34
回答 6查看 6.1K关注 0票数 9

我正在寻找一种在ASP.NET/C#中提取给定web地址的文本的可靠方法。有人能给我指明正确的方向吗?

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

我应该从RSS提要上读吗?对此有什么想法吗?

编辑我增加了一个赏金。我希望从一个URL中提取“相关”文本。从“相关”我的意思是,它应该排除文本从广告(和其他不相干的信息)。输入将类似于一个新闻网站。我只需要提取新闻信息,并去掉多余的文本

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-04-06 20:00:52

一旦下载了页面,并开始使用像HTML敏捷包这样的库来解析html,那么您的工作就开始了:)

筛刮分为两部分。

首先是网络爬虫(网上有很多关于这个的信息,还有一些其他答案在这里提供的简单代码)。爬虫必须遍历链接和下载页面。如果您正在下载大量的页面,并且有start url,您可以自己滚动,或者使用现有的页面。查看维基百科以获得开放源代码for爬虫/蜘蛛的列表。

第二部分是解析html,只提取您想要的文本,并省略任何噪声(标题、横幅、页脚等)。对于现有的库来说,仅仅遍历DOM是很容易的,找出如何处理解析的内容是很困难的。

我以前在另一个所以问题上写过一些关于它的文章,它可能会给你一些如何手动抓取你想要的内容的想法。根据我的经验,没有100%的方法可以找到页面的主要内容,而且通常您需要手动地给它一些指针。困难之处在于,如果页面的html布局发生变化,那么屏幕刮板就会开始失效。

您可以应用统计数据并比较几页的html,以推断广告、菜单等的位置,以消除这些。

由于您提到了新闻站点,与从原始html中解析文本相比,还有两种更容易应用于这些站点的方法。

  1. 检查页面是否有打印url。例如:CNN上的链接有一个等价的打印url,它更容易解析。
  2. 检查页面是否有RSS表示,然后从RSS提要中选择文章文本。如果提要没有全部内容,它应该提供足够的文本来定位整个html页面中的文本。

还可以查看从任意HTML中提取有用文本的简单方法,了解如何创建更通用的解析器。代码是用Python编写的,但是您应该能够在没有太多麻烦的情况下转换它。

票数 4
EN

Stack Overflow用户

发布于 2010-02-14 13:57:55

我认为您需要像HTMLAgilityPack这样的html解析器,或者您可以使用新生婴儿。YQL,它是由Yahoo开发的一个新工具,它的语法类似SQL,您需要了解一些XPATH.

http://developer.yahoo.com/yql/

谢谢

票数 3
EN

Stack Overflow用户

发布于 2010-04-06 13:41:34

使用WebClient实例获取标记..。

代码语言:javascript
复制
Dim Markup As String

Using Client As New WebClient()
    Markup = Client.DownloadString("http://www.google.com")
End Using

然后使用HtmlAgilityPack用XPath解析响应..。

代码语言:javascript
复制
Dim Doc As New HtmlDocument()
Doc.LoadXML(Markup)

If Doc.ParseErrors.Count = 0 Then 
    Dim Node As HtmlNode = Doc.DocumentNode.SelectSingleNode("//body");

    If Node IsNot Nothing Then
        'Do something with Node   
    End If
End If
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2256290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档