Ruby Readability

Command line:

(sudo) gem install ruby-readability

Bundler:

gem "ruby-readability", :require => 'readability'

Example:

require 'rubygems'
require 'readability'
require 'open-uri'

source = open('http://lab.arc90.com/experiments/readability/').read
puts Readability::Document.new(source).content

Options:

You may provide additions options to Readability::Document.new, including:

  :tags               - the base whitelist of tags to sanitize, defaults to %w[div p]
  :remove_empty_nodes - remove <p> tags that have no text content; also removes p tags that contain only images
  :attributes         - whitelist of allowed attributes
  :debug              - provide debugging output, defaults false
  :encoding           - if this page is of a known encoding, you can specify it; if left 
                        unspecified, the encoding will be guessed (only in Ruby 1.9.x)
  :html_headers       - in Ruby 1.9.x these will be passed to the guess_html_encoding gem 
                        to aid with guessing the HTML encoding

Readability comes with a command-line tool for experimentation in bin/readability.

Usage: readability [options] URL
    -d, --debug                      Show debug output
    -i, --images                     Keep images and links
    -h, --help                       Show this message

Potential issues:

  • If you’re on a Mac and are getting segmentation faults, see this discussion github.com/tenderlove/nokogiri/issues/404 and consider updating your version of libxml2. Version 2.7.8 of libxml2 with the following worked for me: gem install nokogiri – –with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 –with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib –with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

This code is under the Apache License 2.0. www.apache.org/licenses/LICENSE-2.0

This is a ruby port of arc90’s readability project

lab.arc90.com/experiments/readability/

Given a html document, it pulls out the main body text and cleans it up.

Ruby port by starrhorne, libc, and iterationlabs. Original gemification by fizx.