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回调函数中使用多线程的方法
Dec 25 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
对pandas中apply函数的用法详解
Apr 10 Python
Python get获取页面cookie代码实例
Sep 12 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
python 负数取模运算实例
Jun 03 Python
python读取hdfs并返回dataframe教程
Jun 05 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
Python破解极验滑动验证码详细步骤
May 21 Python
如何利用python创作字符画
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
php IP转换整形(ip2long)的详解
2013/06/06 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
python每次处理固定个数的字符的方法总结
2013/01/29 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
自荐书封面下载
2013/11/29 职场文书
电话销售经理岗位职责
2013/12/07 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
函授生自我鉴定
2014/03/25 职场文书
一帮一活动总结
2014/05/08 职场文书
商场促销活动总结
2014/07/10 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Docker安装MySql8并远程访问的实现
2022/07/07 Servers