类似Instapaper的算法

时间:2010-11-26 07:53:52

标签: html

是否有任何算法从网页中提取内容?比如instapaper

4 个答案:

答案 0 :(得分:49)

Instapaper的工作分为两步:

  1. 在页面上查找主内容块(不包括页眉,页脚,菜单等)
  2. 从此内容块提取格式文本
  3. 要查找内容块(通常是一些html块元素,如包含关键页面文本内容的div),Instapaper使用的算法与readability使用的算法非常相似。您可以查看source of readability.js以查看正在发生的情况,但其核心是尝试查找页面上具有最高文本/链接比率的区域,尽管它还有其他一些简单的评分指标(例如,关闭我的头脑,比如文本与逗号的比例,para元素等,进入启发式。

    一旦你确定了根节点元素和相关内容,你就需要格式化它,如果你想要你只需要从源文档中提取包含文本的节点元素并将其插入你的文本中,实际上,您可能希望删除现有样式并应用自己的样式,以获得标准外观。如果您想以纯文本输出,可以使用Jericho的Renderer

    update1 :我还应该提一下Instapaper所做的其他事情 - 它遵循'分页'链接(“下一个”或“1”,“2”,“3”链接)文章的结论,以便原件中可能跨越多页的作品将作为单个文档呈现给您。

    update2 我最近遇到了这个comparison of text extraction algorithms

答案 1 :(得分:6)

有一个开源应用程序可以从任何网页中解析文章的文本

https://github.com/jiminoc/goose/wiki

应该做的伎俩

答案 2 :(得分:2)

boilerpipe是opensource java。该算法发表在科学论文中,因此您可以了解它与其他算法相比的效果。阅读它似乎是最好的之一。

答案 3 :(得分:1)

如果您只想要Python中的所有内容而不是格式

>>> from BeautifulSoup import BeautifulSoup
>>> from urllib import urlopen
>>> soup = BeautifulSoup(urlopen("http://www.python.org/").read())
>>> contents = ''.join(soup.findAll(text=True))

诀窍