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数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
Flask框架工厂函数用法实例分析
May 25 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
python中property属性的介绍及其应用详解
Aug 29 Python
python判断无向图环是否存在的示例
Nov 22 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
Python面向对象编程之类的概念
Nov 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
Angular工具方法学习
2016/12/26 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
Python 性能优化技巧总结
2016/11/01 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
简单的Python调度器Schedule详解
2019/08/30 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
网站设计师的岗位职责
2013/11/21 职场文书
面料业务员岗位职责
2013/12/26 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
个人委托书范本
2014/09/13 职场文书
周年庆典答谢词
2015/01/20 职场文书
三行辞职书范文
2015/02/26 职场文书
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs