Python转换HTML到Text纯文本的方法


Posted in Python onJanuary 15, 2015

本文实例讲述了Python转换HTML到Text纯文本的方法。分享给大家供大家参考。具体分析如下:

今天项目需要将HTML转换为纯文本,去网上搜了一下,发现Python果然是神通广大,无所不能,方法是五花八门。

拿今天亲自试的两个方法举例,以方便后人:

方法一:

1. 安装nltk,可以去pipy装

(注:需要依赖以下包:numpy, PyYAML)

2.测试代码:

>>> import nltk  

>>> aa = r''''' 

<html> 

    <body> 

 <b>Project:</b> DeHTML<br> 

 <b>Description</b>:<br> 

 This small script is intended to allow conversion from HTML markup to  

 plain text. 

    </body> 

</html> 

'''

>>> aa  

'\n<html>\n            <body>\n                <b>Project:</b> DeHTML<br>\n                <b>Description</b>:<br>\n                This small script is intended to allow conversion from HTML markup to \n                plain text.\n            </body>\n        </html>\n        '  

>>> <strong>print nltk.clean_html(aa)</strong>  

Project: DeHTML   

     Description :   

    This small script is intended to allow conversion from HTML markup to   

    plain text.

方法二:

如果觉得nltk太笨重,大材小用的话,可以自己写代码,代码如下:

from HTMLParser import HTMLParser  

from re import sub  

from sys import stderr  

from traceback import print_exc  

  

class _DeHTMLParser(HTMLParser):  

    def __init__(self):  

        HTMLParser.__init__(self)  

        self.__text = []  

  

    def handle_data(self, data):  

        text = data.strip()  

        if len(text) > 0:  

            text = sub('[ \t\r\n]+', ' ', text)  

            self.__text.append(text + ' ')  

  

    def handle_starttag(self, tag, attrs):  

        if tag == 'p':  

            self.__text.append('\n\n')  

        elif tag == 'br':  

            self.__text.append('\n')  

  

    def handle_startendtag(self, tag, attrs):  

        if tag == 'br':  

            self.__text.append('\n\n')  

  

    def text(self):  

        return ''.join(self.__text).strip()  

  

  

def dehtml(text):  

    try:  

        parser = _DeHTMLParser()  

        parser.feed(text)  

        parser.close()  

        return parser.text()  

    except:  

        print_exc(file=stderr)  

        return text  

  

  

def main():  

    text = r''''' 

        <html> 

            <body> 

                <b>Project:</b> DeHTML<br> 

                <b>Description</b>:<br> 

                This small script is intended to allow conversion from HTML markup to  

                plain text. 

            </body> 

        </html> 

    '''  

    print(dehtml(text))  

  

  

if __name__ == '__main__':  

    main()

运行结果:

>>> ================================ RESTART ================================ 
>>>  
Project: DeHTML  
Description :  
This small script is intended to allow conversion from HTML markup to plain text. 

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
用Python的SimPy库简化复杂的编程模型的介绍
Apr 13 Python
在Python的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
Python入门必须知道的11个知识点
Mar 21 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
python实现决策树分类(2)
Aug 30 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
python numpy存取文件的方式
Apr 01 Python
python中os操作文件及文件路径实例汇总
Jan 15 #Python
python私有属性和方法实例分析
Jan 15 #Python
python实现堆栈与队列的方法
Jan 15 #Python
python多线程用法实例详解
Jan 15 #Python
Python中os.path用法分析
Jan 15 #Python
python静态方法实例
Jan 14 #Python
python继承和抽象类的实现方法
Jan 14 #Python
You might like
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
扩展你的 PHP 之入门篇
2006/12/04 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
PHP操作数组相关函数
2011/02/03 PHP
基于header的一些常用指令详解
2013/06/06 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
如何打开php的gd2库
2017/02/09 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
jquery easyui使用心得
2014/07/07 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
Python定时执行之Timer用法示例
2015/05/27 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
广告学专业毕业生自荐信
2013/09/24 职场文书
物流管理专业职业生涯规划书
2014/01/06 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
学生党员检讨书范文
2014/12/27 职场文书
党员公开承诺书2015
2015/01/21 职场文书
清洁工工作总结
2015/08/11 职场文书
Nginx配置根据url参数重定向
2022/04/11 Servers