抓网页数据经常遇到例如>或者 这种HTML转义符,抓到字符串里很是烦人。
比方说一个从网页中抓到的字符串
html = '<abc>'
用Python可以这样处理:
importHTMLParser
html_parser =HTMLParser.HTMLParser()
txt = html_parser.unescape(html) #这样就得到了txt = ''
如果还想转回去,可以这样:
importcgi
html = cgi.escape(txt) #这样又回到了 html = '<abc>'
来回转的功能还分了两个模块实现,挺奇怪。没找到更优美的方法,欢迎补充哈~
--------------------------------------------------
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 "&", "" 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[m.group(1)]), s)
For anything more complicated, I use BeautifulSoup.