我需要抓取博客帖子的文本来构建博客帖子的摘要描述,类似于techmeme.com所做的事情。当它是一篇或几篇博客文章时,这不是问题。然而,从其中抓取文本的可能的博客是可变的,并且没有限制。你会怎么做呢?
我过去使用过html agility pack和yql,但这两个解决方案都没有内置的解决方案来满足这一需求。
我的一个想法是搜索div ids和div属性,命名为内容、帖子、文章等,看看它是如何工作的--而不是真正倾向于这个方向。另一个想法是在html文档中搜索最大的文本节点,并假设这就是我想要的节点-可能会导致一些误报。最后的想法是努力在google应用上创建一个众包数据仓库,允许社区管理(读取:创建,更新,删除)大多数流行的新闻/博客平台的xpath映射,然后你可以通过域名或博客平台类型来查询这个列表,并获得必要的xpath -但这似乎是一项艰巨的任务。
当然,我知道你们中的一些人的想法会比我那些愚蠢的想法更有效。
你的想法是什么?
发布于 2010-11-15 02:41:15
做到这一点的唯一可靠方法是为每个博客创建一个类。这样,您就可以在每个特定博客的每个特定类的实现中执行所需的操作。
因此,您将拥有一个抽象基类,它处理博客并从博客返回所需的数据/信息。
例如
public abstract class BlogProcessor
{
public abstract BlogResult ProcessBlog(string url);
}
其中BlogResult是您定义的一种类型,它包含您从博客中需要的所有信息,如标题、日期、标签、帖子等。
每个后代都知道如何为博客提取这些信息。
如果你调用代码,你会像这样对待这些后代类:
foreach(var url in BlogsToParse)
{
var blogProcessor = BlogProcessorFactory.CreateInstance(url);
var blogResult = blogProcessor.ProcessBlog(url);
/* Do Something with blogResult */
}
这有意义吗?
在每个"ProcessBlog“方法的实现中,您可以使用HtmlAgilityPack来执行特定的解析。
https://stackoverflow.com/questions/4174744
复制相似问题