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实现数据库编程方法详解
Jun 09 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
Python上下文管理器和with块详解
Sep 09 Python
TensorFlow数据输入的方法示例
Jun 19 Python
django缓存配置的几种方法详解
Jul 16 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
如何通过Python实现标签云算法
Jul 02 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
python 追踪except信息方式
Apr 25 Python
Python中实现输入一个整数的案例
May 03 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 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下安装配置fckeditor编辑器的方法
2011/03/02 PHP
学习PHP session的传递方式
2016/06/15 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
python处理csv中的空值方法
2018/06/22 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
人力资源专员自我评价怎么写
2013/09/19 职场文书
自荐信的基本格式
2014/02/22 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang