中午 zzh 发来一个问题,如何对抓下来的网页中的 unicode 字符串,诸如北京市一二八中学
进行解码?
首先想到的是最熟的 libxml2/HTMLParser。简单试了试 xmllint,无解;又大致看了看源代码,貌似没有专门处理的部分。
再转到 Python 的 BeautifulSoup。看了看文档,也貌似无解。
最后只好 google 之,发现 php 的 html_entity_decode 是一个现成的函数。赶快推荐给 zzh,发现他已经自己动手写了一个解析函数了,汗....
最后要说的是,在 google 过程中,发现 Perl 似乎也有现成模块来做这个工作,不过偶不会 Perl,没有尝试。另外就是发现一个叫李卫公的 blogger 在 Python 上也写了一个简单的程序来解码,看起来是一个正则表达式牛人,推荐一下。
Topic:
技术
评论
去看www.luanxiang.org
去看www.luanxiang.org 。
李卫公翻译了《master regexpress 3ed》
记得去买一本捧场:D
BeautifulSoup 可以的
>>> from BeautifulSoup import BeautifulStoneSoup
>>> print BeautifulStoneSoup("""春天里
光明""",convertEntities=BeautifulStoneSoup.HTML_ENTITIES).contents[0]
春天里光明
正则表达式也可以处理
另一种做法是:
import re
def decode(string):
return re.sub('[0-9]{5};', lambda x: unichr(int(x.group(0)[2:-1])),re.sub(' ', ' ', string))