Extract text from HTML

## HTML to Text

Extract text from HTML

How is html_text different from .xpath('//text()') from LXML or .get_text() from Beautiful Soup? Text extracted with html_text does not contain inline styles, javascript, comments and other text that is not normally visible to the users. It normalizes whitespace, but is also smarter than .xpath('normalize-space()), adding spaces around inline elements too (which are often used as block elements in html markup), and tries to avoid adding extra spaces for punctuation.

Apart from just getting text from the page (e.g. for display or search), one intended usage of this library is for machine learning (feature extraction). If you want to use the text of the html page as a feature (e.g. for classification), this library gives you plain text that you can later feed into a standard text classification pipeline. If you feel that you need html structure as well, check out webstruct library.

### Install

Install with pip:

pip install html-text

The package depends on lxml, so you might need to install some additional packages: http://lxml.de/installation.html

### Usage

Extract text from HTML:

>>> import html_text
>>> text = html_text.extract_text(u'<h1>Hey</h1>')
u'Hey'

You can also pass already parsed lxml.html.HtmlElement:

>>> import html_text
>>> tree = html_text.parse_html(u'<h1>Hey</h1>')
>>> text = html_text.extract_text(tree)
u'Hey'


### Credits

The code is extracted from utilities used in several projects, written by Mikhail Korobov.

## History

### 0.2.0 (2017-05-29)

• Fix unwanted joins of words with inline tags: spaces are added for inline tags too, but a heuristic is used to preserve punctuation without extra spaces.

• Accept parsed html trees.

### 0.1.1 (2017-01-16)

• Travis-CI and codecov.io integrations added

### 0.1.0 (2016-09-27)

• First release on PyPI.

## Project details

Uploaded source