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中变量交换的例子
Aug 25 Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
Python生成器generator用法示例
Aug 10 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
Python进程池Pool应用实例分析
Nov 27 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
详解如何修改python中字典的键和值
Sep 29 Python
python 制作一个gui界面的翻译工具
May 14 Python
python脚本框架webpy模板控制结构
Nov 20 Python
python 学习GCN图卷积神经网络
May 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
function.inc.php超越php
2006/12/09 PHP
PHP的开发框架的现状和展望
2007/03/16 PHP
php分页函数完整实例代码
2014/09/22 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
浅析Python基础-流程控制
2016/03/18 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Python必须了解的35个关键词
2020/07/16 Python
《包身工》教学反思
2016/02/23 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS