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 相关文章推荐
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python reduce 函数使用详解
Dec 05 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
python实现年会抽奖程序
Jan 22 Python
python占位符输入方式实例
May 27 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
python常用运维脚本实例小结
Feb 14 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
Python打包exe时各种异常处理方案总结
May 18 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 Python
python函数的两种嵌套方法使用
Apr 02 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+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
layui的select联动实现代码
2019/09/28 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
python元组拆包实现方法
2021/02/28 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
工商企业管理实习自我鉴定
2013/12/04 职场文书
建材投资建议书
2014/05/16 职场文书
求职信名称怎么写
2014/05/26 职场文书
教育见习报告范文
2014/11/03 职场文书
委托公证书格式
2015/01/26 职场文书
跑吧孩子观后感
2015/06/10 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python