有趣的新闻文章/博客帖子抓刮问题

时间:2010-11-13 21:16:46

标签: c# asp.net

我需要抓取博客文章的文本来构建类似于techmeme.com所做的博客文章的摘要描述。当它是一个或几个博客帖子时不是问题。然而,从中获取文本的可能博客是可变的和无限的。你会怎么做呢?

我过去曾经使用过html agility pack和yql,但是没有任何内置的处理这个要求的解决方案。

我想过的一个想法是搜索div id和div属性命名内容,帖子,文章等等,看看它是如何工作的 - 不是真正倾向于这个方向。另一个想法是搜索html文档中最大的文本节点,并假设我想要的节点 - 可能导致一些误报。最后的想法是努力在谷歌应用程序上创建一个众包数据存储库,允许社区管理(读取:创建,更新,删除)大多数流行新闻/博客平台的xpath映射,然后您可以查询此列表通过域名或博客平台类型获取必需的xpath - 但这似乎是一个hella事业。

当然,我知道你们中的一些人的想法会比我的任何想法更好。

你有什么想法?

1 个答案:

答案 0 :(得分:1)

这样做的唯一可靠方法是为每个博客设置一个课程。这样,您就可以在每个特定博客的每个特定类的实现中执行所需的操作。

因此,您将拥有一个处理博客的抽象基类,并从博客中返回您需要的数据/信息。

例如

public abstract class BlogProcessor
{
  public abstract BlogResult ProcessBlog(string url);
}

BlogResult是一种类型,您定义的类型包含博客所需的所有信息,如标题,日期,标签,帖子等。

每个后代都知道如何为博客专门提取此信息。

如果你调用代码,你会像pollymorphic-ally一样对待这些后代类:

foreach(var url in BlogsToParse)
{
  var blogProcessor = BlogProcessorFactory.CreateInstance(url);
  var blogResult = blogProcessor.ProcessBlog(url);
  /* Do Something with blogResult */
}

这有意义吗?

在每个“ProcessBlog”方法的实现中,您可以使用HtmlAgilityPack进行特定的解析。