boilerpy3


Nameboilerpy3 JSON
Version 1.0.7 PyPI version JSON
download
home_pagehttps://github.com/jmriebold/BoilerPy3
SummaryPython port of Boilerpipe, for HTML boilerplate removal and text extraction
upload_time2023-11-01 22:55:59
maintainer
docs_urlNone
authorJohn Riebold
requires_python>=3.6
licenseApache 2.0
keywords boilerpipe boilerpy html text extraction text extraction full text extraction
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # BoilerPy3

![build](https://github.com/jmriebold/BoilerPy3/workflows/Tests/badge.svg)


## About

BoilerPy3 is a native Python [port](https://github.com/natural/java2python) of Christian Kohlschütter's [Boilerpipe](https://github.com/kohlschutter/boilerpipe) library, released under the Apache 2.0 Licence.

This package is based on [sammyer's](https://github.com/sammyer) [BoilerPy](https://github.com/sammyer/BoilerPy), specifically [mercuree's](https://github.com/mercuree) [Python3-compatible fork](https://github.com/mercuree/BoilerPy). This fork updates the codebase to be more Pythonic (proper attribute access, docstrings, type-hinting, snake case, etc.) and make use Python 3.6 features (f-strings), in addition to switching testing frameworks from Unittest to PyTest.

**Note**: This package is based on Boilerpipe 1.2 (at or before [this commit](https://github.com/kohlschutter/boilerpipe/tree/b0816590340f4317f500c64565b23beb4fb9a827)), as that's when the code was originally ported to Python. I experimented with updating the code to match Boilerpipe 1.3, however because it performed worse in my tests, I ultimately decided to leave it at 1.2-equivalent.


## Installation

To install the latest version from PyPI, execute:

```shell
pip install boilerpy3
```

If you'd like to try out any unreleased features you can install directly from GitHub like so:

```shell
pip install git+https://github.com/jmriebold/BoilerPy3
```


## Usage

### Text Extraction

The top-level interfaces are the Extractors. Use the `get_content()` methods to extract the filtered text.

```python
from boilerpy3 import extractors

extractor = extractors.ArticleExtractor()

# From a URL
content = extractor.get_content_from_url('http://example.com/')

# From a file
content = extractor.get_content_from_file('tests/test.html')

# From raw HTML
content = extractor.get_content('<html><body><h1>Example</h1></body></html>')
```


### Marked HTML Extraction

To extract the HTML chunks containing filtered text, use the `get_marked_html()` methods.

```python
from boilerpy3 import extractors

extractor = extractors.ArticleExtractor()

# From a URL
content = extractor.get_marked_html_from_url('http://example.com/')

# From a file
content = extractor.get_marked_html_from_file('tests/test.html')

# From raw HTML
content = extractor.get_marked_html('<html><body><h1>Example</h1></body></html>')
```


### Other

Alternatively, use `get_doc()` to return a Boilerpipe document from which you can get more detailed information.

```python
from boilerpy3 import extractors

extractor = extractors.ArticleExtractor()

doc = extractor.get_doc_from_url('http://example.com/')
content = doc.content
title = doc.title
```


## Extractors

All extractors have a `raise_on_failure` parameter (defaults to `True`). When set to `False`, the `Extractor` will handle exceptions raised during text extraction and return any text that was successfully extracted. Leaving this at the default setting may be useful if you want to fall back to another algorithm in the event of an error.


### DefaultExtractor

Usually worse than ArticleExtractor, but simpler/no heuristics. A quite generic full-text extractor.


### ArticleExtractor

A full-text extractor which is tuned towards news articles. In this scenario it achieves higher accuracy than DefaultExtractor. Works very well for most types of Article-like HTML.


### ArticleSentencesExtractor

A full-text extractor which is tuned towards extracting sentences from news articles.


### LargestContentExtractor

A full-text extractor which extracts the largest text component of a page. For news articles, it may perform better than the DefaultExtractor but usually worse than ArticleExtractor


### CanolaExtractor

A full-text extractor trained on [krdwrd](http://krdwrd.org) [Canola](https://krdwrd.org/trac/attachment/wiki/Corpora/Canola/CANOLA.pdf). Works well with SimpleEstimator, too.


### KeepEverythingExtractor

Dummy extractor which marks everything as content. Should return the input text. Use this to double-check that your problem is within a particular Extractor or somewhere else.


### NumWordsRulesExtractor

A quite generic full-text extractor solely based upon the number of words per block (the current, the previous and the next block).


## Notes


### Getting Content from URLs

While BoilerPy3 provides `extractor.*_from_url()` methods as a convenience, these are intended for testing only. For more robust functionality, in addition to full control over the request itself, it is strongly recommended to use the [Requests package](https://docs.python-requests.org/) instead, calling `extractor.get_content()` with the resulting HTML.

```python
import requests
from boilerpy3 import extractors

extractor = extractors.ArticleExtractor()

# Make request to URL
resp = requests.get('http://example.com/')

# Pass HTML to Extractor
content = extractor.get_content(resp.text)
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jmriebold/BoilerPy3",
    "name": "boilerpy3",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "boilerpipe,boilerpy,html text extraction,text extraction,full text extraction",
    "author": "John Riebold",
    "author_email": "jmriebold@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/a9/78/2ff130662bc53491a5c517673dfe4e5999a44bc46bf372f24a5a71a0e8ca/boilerpy3-1.0.7.tar.gz",
    "platform": null,
    "description": "# BoilerPy3\n\n![build](https://github.com/jmriebold/BoilerPy3/workflows/Tests/badge.svg)\n\n\n## About\n\nBoilerPy3 is a native Python [port](https://github.com/natural/java2python) of Christian Kohlsch\u00fctter's [Boilerpipe](https://github.com/kohlschutter/boilerpipe) library, released under the Apache 2.0 Licence.\n\nThis package is based on [sammyer's](https://github.com/sammyer) [BoilerPy](https://github.com/sammyer/BoilerPy), specifically [mercuree's](https://github.com/mercuree) [Python3-compatible fork](https://github.com/mercuree/BoilerPy). This fork updates the codebase to be more Pythonic (proper attribute access, docstrings, type-hinting, snake case, etc.) and make use Python 3.6 features (f-strings), in addition to switching testing frameworks from Unittest to PyTest.\n\n**Note**: This package is based on Boilerpipe 1.2 (at or before [this commit](https://github.com/kohlschutter/boilerpipe/tree/b0816590340f4317f500c64565b23beb4fb9a827)), as that's when the code was originally ported to Python. I experimented with updating the code to match Boilerpipe 1.3, however because it performed worse in my tests, I ultimately decided to leave it at 1.2-equivalent.\n\n\n## Installation\n\nTo install the latest version from PyPI, execute:\n\n```shell\npip install boilerpy3\n```\n\nIf you'd like to try out any unreleased features you can install directly from GitHub like so:\n\n```shell\npip install git+https://github.com/jmriebold/BoilerPy3\n```\n\n\n## Usage\n\n### Text Extraction\n\nThe top-level interfaces are the Extractors. Use the `get_content()` methods to extract the filtered text.\n\n```python\nfrom boilerpy3 import extractors\n\nextractor = extractors.ArticleExtractor()\n\n# From a URL\ncontent = extractor.get_content_from_url('http://example.com/')\n\n# From a file\ncontent = extractor.get_content_from_file('tests/test.html')\n\n# From raw HTML\ncontent = extractor.get_content('<html><body><h1>Example</h1></body></html>')\n```\n\n\n### Marked HTML Extraction\n\nTo extract the HTML chunks containing filtered text, use the `get_marked_html()` methods.\n\n```python\nfrom boilerpy3 import extractors\n\nextractor = extractors.ArticleExtractor()\n\n# From a URL\ncontent = extractor.get_marked_html_from_url('http://example.com/')\n\n# From a file\ncontent = extractor.get_marked_html_from_file('tests/test.html')\n\n# From raw HTML\ncontent = extractor.get_marked_html('<html><body><h1>Example</h1></body></html>')\n```\n\n\n### Other\n\nAlternatively, use `get_doc()` to return a Boilerpipe document from which you can get more detailed information.\n\n```python\nfrom boilerpy3 import extractors\n\nextractor = extractors.ArticleExtractor()\n\ndoc = extractor.get_doc_from_url('http://example.com/')\ncontent = doc.content\ntitle = doc.title\n```\n\n\n## Extractors\n\nAll extractors have a `raise_on_failure` parameter (defaults to `True`). When set to `False`, the `Extractor` will handle exceptions raised during text extraction and return any text that was successfully extracted. Leaving this at the default setting may be useful if you want to fall back to another algorithm in the event of an error.\n\n\n### DefaultExtractor\n\nUsually worse than ArticleExtractor, but simpler/no heuristics. A quite generic full-text extractor.\n\n\n### ArticleExtractor\n\nA full-text extractor which is tuned towards news articles. In this scenario it achieves higher accuracy than DefaultExtractor. Works very well for most types of Article-like HTML.\n\n\n### ArticleSentencesExtractor\n\nA full-text extractor which is tuned towards extracting sentences from news articles.\n\n\n### LargestContentExtractor\n\nA full-text extractor which extracts the largest text component of a page. For news articles, it may perform better than the DefaultExtractor but usually worse than ArticleExtractor\n\n\n### CanolaExtractor\n\nA full-text extractor trained on [krdwrd](http://krdwrd.org) [Canola](https://krdwrd.org/trac/attachment/wiki/Corpora/Canola/CANOLA.pdf). Works well with SimpleEstimator, too.\n\n\n### KeepEverythingExtractor\n\nDummy extractor which marks everything as content. Should return the input text. Use this to double-check that your problem is within a particular Extractor or somewhere else.\n\n\n### NumWordsRulesExtractor\n\nA quite generic full-text extractor solely based upon the number of words per block (the current, the previous and the next block).\n\n\n## Notes\n\n\n### Getting Content from URLs\n\nWhile BoilerPy3 provides `extractor.*_from_url()` methods as a convenience, these are intended for testing only. For more robust functionality, in addition to full control over the request itself, it is strongly recommended to use the [Requests package](https://docs.python-requests.org/) instead, calling `extractor.get_content()` with the resulting HTML.\n\n```python\nimport requests\nfrom boilerpy3 import extractors\n\nextractor = extractors.ArticleExtractor()\n\n# Make request to URL\nresp = requests.get('http://example.com/')\n\n# Pass HTML to Extractor\ncontent = extractor.get_content(resp.text)\n```\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Python port of Boilerpipe, for HTML boilerplate removal and text extraction",
    "version": "1.0.7",
    "project_urls": {
        "Homepage": "https://github.com/jmriebold/BoilerPy3"
    },
    "split_keywords": [
        "boilerpipe",
        "boilerpy",
        "html text extraction",
        "text extraction",
        "full text extraction"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d9b1e376edbdc1f1755fdb6cb1f6173b2a7afa8a6d766f7d10e34e7db0c18510",
                "md5": "aff487fd8fac501a8d0154df4883693f",
                "sha256": "fbfba91745606965400204d26852283ddf90235ab30afe9904de20051556a523"
            },
            "downloads": -1,
            "filename": "boilerpy3-1.0.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "aff487fd8fac501a8d0154df4883693f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 22963,
            "upload_time": "2023-11-01T22:55:58",
            "upload_time_iso_8601": "2023-11-01T22:55:58.254859Z",
            "url": "https://files.pythonhosted.org/packages/d9/b1/e376edbdc1f1755fdb6cb1f6173b2a7afa8a6d766f7d10e34e7db0c18510/boilerpy3-1.0.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a9782ff130662bc53491a5c517673dfe4e5999a44bc46bf372f24a5a71a0e8ca",
                "md5": "79c99a46fc9d20fd6837ac27877890a7",
                "sha256": "a9fede212f80a36dbc7d4f93e35d8636911cb6b37085a3230557d16ad0f076c8"
            },
            "downloads": -1,
            "filename": "boilerpy3-1.0.7.tar.gz",
            "has_sig": false,
            "md5_digest": "79c99a46fc9d20fd6837ac27877890a7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 22243,
            "upload_time": "2023-11-01T22:55:59",
            "upload_time_iso_8601": "2023-11-01T22:55:59.667609Z",
            "url": "https://files.pythonhosted.org/packages/a9/78/2ff130662bc53491a5c517673dfe4e5999a44bc46bf372f24a5a71a0e8ca/boilerpy3-1.0.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-01 22:55:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jmriebold",
    "github_project": "BoilerPy3",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "boilerpy3"
}
        
Elapsed time: 0.13351s