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 MD5文件生成码
Jan 12 Python
Python中使用logging模块打印log日志详解
Apr 05 Python
在Python中使用列表生成式的教程
Apr 27 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
Python SQLite3简介
Feb 22 Python
python实现音乐下载的统计
Jun 20 Python
Python简单处理坐标排序问题示例
Jul 11 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
python中get和post有什么区别
Jun 19 Python
Django mysqlclient安装和使用详解
Sep 17 Python
Selenium 安装和简单使用的实现
Dec 04 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
关于php fread()使用技巧
2010/01/22 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
javascript 播放器 控制
2007/01/22 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
python获取多线程及子线程的返回值
2017/11/15 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
财务总监管理职责范文
2014/03/09 职场文书
内勤主管岗位职责
2014/04/03 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
电影地道战观后感
2015/06/04 职场文书
结婚仪式主持词
2015/06/29 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL