我可以使用Hpricot查找任何/大多数网站的主要文章文本吗?

ben*_*ben 2 ruby screen-scraping hpricot

我需要一种从显示文章的任何网页中提取主要文本的方法.类似于Readability可以在任何运行的网站上找到主要文本的方式.

我正在使用Ruby on Rails,所以我认为Hpricot是我最好的选择.我在Hpricot中寻找的是什么?某处有例子吗?谢谢阅读.


Dan*_*man 5

您当然可以使用Hpricot从任何给定的HTML页面中抓取内容.

这是一个循序渐进的教程:http://www.igvita.com/2007/02/04/ruby-screen-scraper-in-60-seconds/

Hpricot非常适合使用XPath表达式解析具有已知HTML结构的文件.

但是,您将难以编写任何可以读取任何网页并识别主要文章文本的通用内容.我认为你需要某种基本的AI(至少),这远远超出了Hpricot可以做的范围.

如果有这样的集合,你可以做的就是为你想要抓取的常见HTML格式(可能是Wordpress,Tumblr,Blogger等)编写一组代码.

我也相信你也可以尝试一些启发式算法(基于可读性的工作原理,我认为他们做的很好 - 看起来它的工作远非完美)

首先尝试启发式:

1)识别(固定的)一组标签,这些标签可以被认为是"主要文本块"的一部分(例如<p> <br> <img>等).

2)抓取页面并在页面上找到仅包含标签的最大文本块(1).

3)从(2)返回文本,删除(1)中的标签.

看看可读性的结果,我认为这种启发式方法也会起作用.