一个用于从HTML中智能提取文本并最终重建HTML的小型库
项目描述
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 查看哈希值)
关闭
boned-html-0.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69b1e42a3ef14217b531c47635b355cdeddd716684af1da2d284d4649cf4caff |
|
MD5 | 099be9ed384bb245b3f9f24f315ad472 |
|
BLAKE2b-256 | 9ae2d54fb05a126bbb6047a7062206aa3fa773b204ce3e982e29afbf46cd8d7d |
关闭
boned_html-0.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e75ba1ebfd018660f9ac9dc12f0fe8e3a8ce84b840add48c92cb98748c82de9b |
|
MD5 | 9545412bc910a236fe4d41c13154e809 |
|
BLAKE2b-256 | 5e543252b547ac81f7933be843b62432e7a8a6bd83ed05652d98860a97cee53b |