python处理html中的转义字符

       最近在用python处理网页数据时,经常遇到一些html转义字符(也叫html字符实体),例如<> 等。字符实体一般是为了表示网页中的预留字符,比如>用>表示,防止被浏览器认为是标签,具体参考w3school的HTML 字符实体。虽然很有用,但是它们会极度影响对于网页数据的解析。为了处理这些转义字符,有如下解决方案:

1、使用HTMLParser处理


  
  
import HTMLParser html_cont =  "&nbsp;asdfg&gt;123&lt;" html_parser = HTMLParser.HTMLParser() new_cont = html_parser.unescape(html_cont) print new_cont  #new_cont = " asdfg>123<"
转换回去(只是空格转不回去了):


  
  
import cgi new_cont = cgi.escape(new_cont) print new_cont  #new_cont = " asdfg&gt;123&lt;" 

2、直接挨个替换


  
  
html_cont =  "&nbsp;asdfg&gt;123&lt;" new_cont = new_cont.replace('&nbsp;', ' ') print new_cont  #new_cont = " asdfg&gt;123&lt;" new_cont = new_cont.replace('&gt;', '>') print new_cont  #new_cont = " asdfg>123&lt;" new_cont = new_cont.replace('&lt;', '<') print new_cont  #new_cont = " asdfg>123<" 
不知道还有没有更好的办法。


另外stackoverflow上给出了在xml中处理转义字符的解答:python - What's the best way to handle &nbsp;-like entities in XML documents with lxml? - Stack Overflow



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值