起源于在 V2EX 上看到一篇文章,作者在最后附上用 Base64
编码的邮箱,虽然能够有效防止一般爬虫,但感觉不够优雅。在网上搜了一圈,发现可以把邮箱转为 HTML 字符实体
的方式达到类似目的,在网页上能够正常显示,但邮箱地址并不会直接出现在源码中。
HTML 字符实体
英文为 HTML Entities
,主要是表示预留字符和一些键盘无法输入的字符。在网上搜了一圈,发现没有能直接把字符转为 HTML 字符实体
的方法,预留字符倒是可以通过 html.unescape
来转换,但中英文字符就不行了。不过因为 HTML
使用的也是 Unicode 字符集
,所以我们可以通过把英文字符转为 Unicode
,然后再加上 &#
和 ;
来实现。
转换
首先是尝试把字符转为 Unicode
编码
# 使用内建函数 ord() 实现编码转换>>> ord('w')119
拼接
然后把转换完成的 Unicode
拼接成 HTML 字符实体,即在 Unicode
前加上 &#
,Unicode
后加上 ;
# 使用 join() 完成拼接>>> ''.join('&#' + str(ord('w')) + ';')'w'
这样,转换完成的便是 HTML 可以识别的字符实体,把它直接加进 Markdown,或者是以 HTML 的方式写入都可以。
完整代码
def character2unicode(mail): """转换字符为 HTML 字符实体,并返回""" return ''.join('&#' + str(ord(m)) + ';' for m in mail)
if __name__ == "__main__":