用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[m.group(1)]), s)
For anything more complicated, I use BeautifulSoup.

时间: 2024-08-29 04:20:24

用python处理html代码的转义与还原的相关文章

你真的了解python中的换行以及转义吗?

python中的分号 在python中默认是以换行来标志一行语句的结束. a = "xxxx" print(a) # xxxx 这段代码很简单,因为a =?"xxxx"后面已经没有内容了是一个换行,那么就代表这个语句结束了.但是在python中我们还可以指定分号,来指定该语句结束了. a = "xxxx" ; print(a) ; b = 1; print(b) # 输出内容 """ xxxx 1 "&qu

机器学习系列(9)_机器学习算法一览(附Python和R代码)

本文资源翻译@酒酒Angie:伊利诺伊大学香槟分校统计学同学,大四在读,即将开始计算机的研究生学习.希望认识更多喜欢大数据和机器学习的朋友,互相交流学习. 内容校正调整:寒小阳 && 龙心尘 时间:2016年4月 出处:http://blog.csdn.net/han_xiaoyang/article/details/51191386 http://blog.csdn.net/longxinchen_ml/article/details/51192086 声明:版权所有,转载请联系作者并注

&lt;转&gt;机器学习系列(9)_机器学习算法一览(附Python和R代码)

转自http://blog.csdn.net/han_xiaoyang/article/details/51191386 – 谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能够使电脑变得更聪明,更人性化的技术,机器学习. – 埃里克 施密特(谷歌首席执行官) 当计算从大型计算机转移至个人电脑再转移到云的今天,我们可能正处于人类历史上最关键的时期.之所以关键,并不是因为已经取得的成就,而是未来几年里我们即将要获得的进步和成就. 对我来说,如今最令我激动的就是计算技术和工具的普及,从而带

python+spark程序代码片段

处理如此的字符串: time^B1493534543940^Aid^B02CD^Aasr^B叫爸爸^Anlp^B{"domain":"com.abc.system.chat","intent":"chat","slots":{"tts":"爸爸","asr":"叫爸爸"},"voice":"叫爸爸&

python调用c代码

Linux环境下使用python调用C的printf例子: #!/usr/bin/env python2.7 #-*- coding:utf-8 -*- from ctypes import * def test(): #libc = cdll.LoadLibrary("libc.so.6") libc = CDLL("libc.so.6") msg = "hello world!\n" libc.printf("Testing:%s&

Python 坑爹之 代码缩进

Python代码缩进 这两天python-cn邮件列表有一条thread发展的特别长,题目是<python的代码缩进真是坑爹>(地址),楼主在一台电脑上用KOMODO写的代码到另一台电脑上就不能运行了,调试后才发现是代码缩进的问题,为此楼主表示“真是火大”!而之后的回复,可想而知,批判楼主.教育楼主.鄙视楼主等的人绝不是少数(毕竟是python邮件列表,都是python开发者.爱好者嘛). 要求严格的代码缩进是python语法的一大特色,就像C语言家族(C.C++.Java.C#等等)中的花括

python调用Java代码,完毕JBPM工作流application

1.缘由 有一庞大Python django webproject,要引入工作流引擎,像OA一样.方便的流程控制与管理.Python或django关于工作流的开源插件,稀少,并且弱爆了,终于选用java的开源框架JBPM.为了使Pythonproject整合Java框架,尝试过jbpm-console提供的 REST, 以失败告终,终于选用Python 直接调用Java代码.操作JBPM. 1.1pythonprojectREST与JBPM Workbench交互 失败 REST URL格式 h

python 获得github代码库列表

1.背景 项目需求,要求获得github的repo的api,以便可以提取repo的数据进行分析.研究了一天,终于解决了这个问题,虽然效率还是比较低下. 因为github的那个显示repo的api,列出了每个repo的详细信息,而且是json格式的.现在貌似还没有找到可以分析多个json格式数据的方法,所以用的是比较蠢得splite加re的方法.如果大家有更好的方法,不发留言讨论! 2.代码 import re import os def GetUrl(num): str = os.popen("

Python外壳:代码结构

使用zip()并行迭代 days = ['Monday', 'Tuesday', 'Wednesday']>>> fruits = ['banana', 'orange', 'peach']>>> drinks = ['coffee', 'tea', 'beer']>>> desserts = ['tiramisu', 'ice cream', 'pie', 'pudding']>>> for day, fruit, drink, d