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字典的常用操作方法小结
May 16 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
python scp 批量同步文件的实现方法
Jan 03 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
Python Subprocess模块原理及实例
Aug 26 Python
python是否适合网页编程详解
Oct 04 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
Python&Matlab实现灰狼优化算法的示例代码
Mar 21 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
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python实现简单登录验证
2016/04/13 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
生物化学研究助理员求职信
2013/10/09 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
九年级物理教学反思
2014/01/29 职场文书
五年级数学教学反思
2014/02/11 职场文书
学校运动会报道稿
2014/09/23 职场文书
股份转让协议书范本
2015/01/27 职场文书
预备党员自我评价范文
2015/03/04 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
docker 制作mysql镜像并自动安装
2022/05/20 Servers