python去掉html标签_python 去除html标签的几种方法

本文介绍了几种Python去除HTML标签的方法,包括使用正则表达式、htmlparser等。通过这些方法,可以有效地从HTML字符串中提取纯文本内容。
摘要由CSDN通过智能技术生成

#! /usr/bin/python

# -*- coding:utf-8 -*-

'''

created on 2013-12-18

@author: java

'''

import re

from htmlparser import htmlparser

class filtertag():

def __init__(self):

pass

def filterhtmltag(self,htmlstr):

'''

过滤html中的标签

:param htmlstr:html字符串 或是网页源码

'''

self.htmlstr = htmlstr

#先过滤cdata

re_cdata=re.compile('//]*//\]\]>',re.i) #匹配cdata

re_script=re.compile(']*>[^',re.i)#script

re_style=re.compile(']*>[^',re.i)#style

re_br=re.compile('

')#处理换行

re_h=re.compile(']*>')#html标签

re_comment=re.compile(']*-->')#html注释

s=re_cdata.sub('',htmlstr)#去掉cdata

s=re_script.sub('',s) #去掉script

s=re_style.sub('',s)#去掉style

s=re_br.sub('\n',s)#将br转换为换行

blank_line=re.compile('\n+')#去掉多余的空行

s = blank_line.sub('\n',s)

s=re_h.sub('',s) #去掉html 标签

s=re_comment.sub('',s)#去掉html注释

#去掉多余的空行

blank_line=re.compile('\n+')

s=blank_line.sub('\n',s)

filtertag = filtertag()

s=filtertag.replacecharentity(s)#替换实体

print s

def replacecharentity(self,htmlstr):

'''

替换html中常用的字符实体

使用正常的字符替换html中特殊的字符实体

可以添加新的字符实体到char_entities 中

char_entities是一个字典前面是特殊字符实体 后面是其对应的正常字符

:param htmlstr:

'''

self.htmlstr = htmlstr

char_entities={'nbsp':' ','160':' ',

'lt':'','62':'>',

'amp':'&','38':'&',

'quot':'"','34':'"',}

re_charentity=re.compile(r'?(?p\w+);')

sz=re_charentity.search(htmlstr)

while sz:

entity=sz.group()#entity全称,如>

key=sz.group('name')#去除&;后的字符如(" "--->key = "nbsp") 去除&;后entity,如>为gt

try:

htmlstr= re_charentity.sub(char_entities[key],htmlstr,1)

sz=re_charentity.search(htmlstr)

except keyerror:

#以空串代替

htmlstr=re_charentity.sub('',htmlstr,1)

sz=re_charentity.search(htmlstr)

return htmlstr

def replace(self,s,re_exp,repl_string):

return re_exp.sub(repl_string)

def strip_tags(self,htmlstr):

'''

使用htmlparser进行html标签过滤

:param htmlstr:

'''

self.htmlstr = htmlstr

htmlstr = htmlstr.strip()

htmlstr = htmlstr.strip("\n")

result = []

parser = htmlparser()

parser.handle_data = result.append

parser.feed(htmlstr)

parser.close()

return ''.join(result)

def striptagsimple(self,htmlstr):

'''

最简单的过滤html 标签的方法 注意必须是 而不能单纯是

:param htmlstr:

'''

self.htmlstr = htmlstr

# dr =re.compile(r']+>',re.s)

dr = re.compile(r']*>',re.s)

htmlstr =re.sub(dr,'',htmlstr)

return htmlstr

if __name__=='__main__':

# s = file('google.html').read()

filters = filtertag()

print filters.striptagsimple("你好")

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值