跳转到主要内容

一个用于从HTML中智能提取文本并最终重建HTML的小型库

项目描述

pypi travis coveralls

Boned html是一个小型Python库。

它帮助您从HTML(以lxml树的形式)中提取文本,处理这些文本,将其分类,并使用特定的CSS类将文本重新注入HTML中。

典型用途是对HTML进行分类。例如,您正在对文本进行分类,并希望用户在原始HTML上可视化这些类别。

文本将以智能的方式提取:它不会在语义标签(如<i>、<em>等)上停止,而是在其他标签(如<h1>、<p>等)上停止。

当您重新注入文本时,将添加回语义标签,并尊重通用的HTML布局。

安装

pip install boned-html

用法

功能由类boned_html.Chunker提供,具有以下方法

  • chunk_tree 从lxml树中获取文本块。

  • unchunk 将块重新组合,为文本片段提供CSS类。

一个快速示例:假设我们有一个检测句子中电话号码值的功能

>>> import re
>>> from itertools import cycle
>>> def get_tel(text):
...    splits = re.split(r"(\+?(?:\d\s*){8,13})", text)
...    return list(zip(splits, cycle([None, "tel"])))
>>> get_tel("call +33 00 00 00 00")
[('call ', None), ('+33 00 00 00 00', 'tel'), ('', None)]

并且有一个HTML

>>> html = '''
... <html>
...   <head><title>call +33 00 00 00 00</title></head>
...   <body>
...     <p>To get an operator <em>call</em></p>
...     <p><b>call</b> <em>(country) +33</em> 00 00 00 00</p>
...   </body>
... </html>
... '''

我们进行分块

>>> import lxml.html
>>> from boned_html import HtmlBoner
>>> tree = lxml.html.fromstring(html)
>>> boned = HtmlBoner(tree)

我们评估每个文本,如果包含电话号码,则将其分配给“tel”类。

>>> for i, text in enumerate(boned):
...     if text is not None:
...         boned.set_classes(i, get_tel(text))

我们现在重建树。

>>> boned.tree
<Element html ...>
>>> print(boned)
<html>
  <head><title>call +33 00 00 00 00</title></head>
  <body>
    <p>To get an operator <em>call</em></p>
    <p><b>call</b> <em>(country) </em><span class="tel" id="chunk-6-1"><em>+33</em> 00 00 00 00</span></p>
  </body>
</html>

我们的数字周围有一个特定的span,同时处理了em标签的打开和关闭,并且中的电话号码保持不变。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

boned-html-0.2.tar.gz (10.9 kB 查看哈希值)

上传时间

构建分发

boned_html-0.2-py3-none-any.whl (13.0 kB 查看哈希值)

上传时间 Python 3

由以下支持