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中实现结构相似的函数调用方法
Mar 10 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
Python爬虫代理IP池实现方法
Jan 05 Python
Python编程实现删除VC临时文件及Debug目录的方法
Mar 22 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
Python实现k-means算法
Feb 23 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 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入门小知识
2008/03/24 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
python使用心得之获得github代码库列表
2014/06/25 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
python 如何快速复制序列
2020/09/07 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
大学生如何写自荐信
2014/01/08 职场文书
研究生求职自荐书
2014/06/23 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
测量员岗位职责
2015/02/14 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang