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 时间处理datetime实例
Sep 06 Python
python socket 超时设置 errno 10054
Jul 01 Python
python的dict,set,list,tuple应用详解
Jul 24 Python
跟老齐学Python之坑爹的字符编码
Sep 28 Python
python私有属性和方法实例分析
Jan 15 Python
Python中返回字典键的值的values()方法使用
May 22 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
通过python改变图片特定区域的颜色详解
Jul 15 Python
Python运算符+与+=的方法实例
Feb 18 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
destoon复制新模块的方法
2014/06/21 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
JS模拟多线程
2007/02/07 Javascript
javascript两段代码,两个小技巧
2010/02/04 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
Python版微信红包分配算法
2015/05/04 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
浅谈五大Python Web框架
2017/03/20 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
PHP如何删除一个Cookie值
2012/11/15 面试题
标准的毕业生自荐信
2014/04/20 职场文书
董事长助理工作职责
2014/06/08 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python