jiach 发表于 2015-12-2 08:44:10

用python处理html代码的转义与还原

用python处理html代码的转义与还原


  转义 escape:




import cgi

s = cgi.escape("""& < >""")# s = '&amp; &lt; &gt;'

  反转义 unescape:




#使用标准库

from htmllib import HTMLParser

h = HTMLparser.HTMLParser()

s = h.unescape('& < >')    # s = u'& < >'



#使用BeautifulSoup

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, \

       convertEntities=BeautifulSoup.HTML_ENTITIES)



引用于:

http://fredericiana.com/2010/10/08/decoding-html-entities-to-text-in-python/

https://wiki.python.org/moin/EscapingHtml

----------------------------------------------------------------------------------------------------------




Python处理HTML转义字符


  抓网页数据经常遇到例如&gt;或者&nbsp;这种HTML转义符,抓到字符串里很是烦人。
  比方说一个从网页中抓到的字符串



html = '&lt;abc&gt;'
  用Python可以这样处理:



import HTMLParser
html_parser = HTMLParser.HTMLParser()
txt = html_parser.unescape(html) #这样就得到了txt = '<abc>'
  如果还想转回去,可以这样:



import cgi
html = cgi.escape(txt) # 这样又回到了 html = '&lt;abc&gt'
  来回转的功能还分了两个模块实现,挺奇怪。没找到更优美的方法,欢迎补充哈~
  --------------------------------------------------
  



html的escape和unescape




http://stackoverflow.com/questions/275174/how-do-i-perform-html-decoding-encoding-using-python-django
For html encoding, there's cgi.escape from the standard library:
>> help(cgi.escape)
cgi.escape = escape(s, quote=None)
    Replace special characters "&", "<" and ">" to HTML-safe sequences.
    If the optional flag quote is true, the quotation mark character (")
    is also translated.
For html decoding, I use the following:
from htmlentitydefs import name2codepoint
# for some reason, python 2.5.2 doesn't have this one (apostrophe)
name2codepoint['#39'] = 39
def unescape(s):
    "unescape HTML code refs; c.f. http://wiki.python.org/moin/EscapingHtml"
    return re.sub('&(%s);' % '|'.join(name2codepoint),
            lambda m: unichr(name2codepoint), s)
For anything more complicated, I use BeautifulSoup.
页: [1]
查看完整版本: 用python处理html代码的转义与还原