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压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
Python计时相关操作详解【time,datetime】
May 26 Python
python回调函数中使用多线程的方法
Dec 25 Python
Python3之手动创建迭代器的实例代码
May 22 Python
Python实现FM算法解析
Jun 18 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 Python
Python3常见函数range()用法详解
Dec 30 Python
最小二乘法及其python实现详解
Feb 24 Python
Python3基于plotly模块保存图片表格
Aug 03 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
Python first-order-model实现让照片动起来
Jun 25 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
python单例模式实例分析
2015/04/08 Python
python相似模块用例
2016/03/04 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
python+opencv实现车道线检测
2021/02/19 Python
final, finally, finalize的区别
2012/03/01 面试题
迟到检讨书500字
2014/02/05 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
慰问信范文
2015/02/14 职场文书
小学班主任自我评价
2015/03/11 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
mysql的Buffer Pool存储及原理
2022/04/02 MySQL