inscriptis - HTML to text converter.
Project description
A python based HTML to text conversion library, command line client and Web service with support for nested tables and a subset of CSS. Please take a look at the Rendering document for a demonstration of inscriptis’ conversion quality.
Documentation
The full documentation is built automatically and published on Read the Docs.
Table of Contents
Installation
At the command line:
$ pip install inscriptis
Or, if you don’t have pip installed:
$ easy_install inscriptis
If you want to install from the latest sources, you can do:
$ git clone https://github.com/weblyzard/inscriptis.git $ cd inscriptis $ python setup.py install
Python library
Embedding inscriptis into your code is easy, as outlined below:
import urllib.request from inscriptis import get_text url = "https://www.informationscience.ch" html = urllib.request.urlopen(url).read().decode('utf-8') text = get_text(html) print(text)
Standalone command line client
The command line client converts HTML files or text retrieved from Web pages to the corresponding text representation.
Command line parameters
The inscript.py command line client supports the following parameters:
usage: inscript.py [-h] [-o OUTPUT] [-e ENCODING] [-i] [-d] [-l] [-a] [--indentation INDENTATION] [-v] [input] Converts HTML from file or url to a clean text version positional arguments: input Html input either from a file or an url (default:stdin) optional arguments: -h, --help show this help message and exit -o OUTPUT, --output OUTPUT Output file (default:stdout). -e ENCODING, --encoding ENCODING Content encoding for reading and writing files (default:utf-8) -i, --display-image-captions Display image captions (default:false). -d, --deduplicate-image-captions Deduplicate image captions (default:false). -l, --display-link-targets Display link targets (default:false). -a, --display-anchor-urls Deduplicate image captions (default:false). --indentation INDENTATION How to handle indentation (extended or strict; default: extended). -v, --version display version information
Examples
convert the given page to text and output the result to the screen:
$ inscript.py https://www.fhgr.ch
convert the file to text and save the output to output.txt:
$ inscript.py fhgr.html -o fhgr.txt
convert text provided via stdin and save the output to output.txt:
$ echo '<body><p>Make it so!</p>></body>' | inscript.py -o output.txt
Web Service
The Flask Web Service translates HTML pages to the corresponding plain text.
Additional Requirements
python3-flask
Startup
Start the inscriptis Web service with the following command:
$ export FLASK_APP="web-service.py" $ python3 -m flask run
Usage
The Web services receives the HTML file in the request body and returns the corresponding text. The file’s encoding needs to be specified in the Content-Type header (UTF-8 in the example below):
$ curl -X POST -H "Content-Type: text/html; encoding=UTF8" --data-binary @test.html http://localhost:5000/get_text
The service also supports a version call:
$ curl http://localhost:5000/version
Fine tuning
The following options are available for fine tuning inscriptis’ HTML rendering:
More rigorous indentation: call inscriptis.get_text() with the parameter indentation=’extended’ to also use indentation for tags such as <div> and <span> that do not provide indentation in their standard definition. This strategy is the default in inscript.py and many other tools such as lynx. If you do not want extended indentation you can use the parameter indentation=’standard’ instead.
Overwriting the default CSS definition: inscriptis uses CSS definitions that are maintained in inscriptis.css.CSS for rendering HTML tags. You can override these definitions (and therefore change the rendering) as outlined below:
from lxml.html import fromstring from inscriptis.css_profiles import CSS_PROFILES, HtmlElement from inscriptis.html_properties import Display from inscriptis.model.config import ParserConfig # create a custom CSS based on the default style sheet and change the rendering of `div` and `span` elements css = CSS_PROFILES['strict'].copy() css['div'] = HtmlElement('div', display=Display.block, padding=2) css['span'] = HtmlElement('span', prefix=' ', suffix=' ') html_tree = fromstring(html) # create a parser using a custom css config = ParserConfig(css=css) parser = Inscriptis(html_tree, config) text = parser.get_text()
Changelog
A full list of changes can be found in the release notes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file inscriptis-1.1.tar.gz
.
File metadata
- Download URL: inscriptis-1.1.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8abcbc0205b3f66a6d5cca439ea34aa4b15948e7ec710c8de39a3ab62ae7c5ec |
|
MD5 | aa0e99ff744676c837e2a9d4f6aea859 |
|
BLAKE2b-256 | 8a581ff788903a98e08d6eaf37e89e184e57fc9c2775e073425b3d34dcca55e8 |
File details
Details for the file inscriptis-1.1-py3-none-any.whl
.
File metadata
- Download URL: inscriptis-1.1-py3-none-any.whl
- Upload date:
- Size: 22.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df93481cb596ea68434ff29c4eeea2f988edf13edf8edcc4f955693ee3720216 |
|
MD5 | 3c19e4f8318e199a7ffde865781793e5 |
|
BLAKE2b-256 | 0a105d6a3a092f6abb1b303e006489581230990ba78f8b24c81ce3de7ead7447 |