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

邓焱
2023-12-01

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

转义 escape:

import cgi

s = cgi.escape("""& < >""") # s = '& < >'

反转义 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

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

抓网页数据经常遇到例如>或者 这种HTML转义符,抓到字符串里很是烦人。

比方说一个从网页中抓到的字符串

html = '<abc>'

用Python可以这样处理:

import HTMLParser

html_parser = HTMLParser.HTMLParser()

txt = html_parser.unescape(html) #这样就得到了txt = ''

如果还想转回去,可以这样:

import cgi

html = cgi.escape(txt) # 这样又回到了 html = '<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 "&", "" 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.

python的PEP8 代码风格指南

PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...

python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题

笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...

关于HTML代码的转义

笔记: 1.在通过jsonp方式传输HTML代码的时候,为了防止代码中的一些字符影响json的语法,需要对HTML代码进行转义. 2.转义的时候可以只转义特殊字符(引号之类的),也可以把所有字符(中文 ...

Python 坑爹之 代码缩进

建议:统一使用空格!!!!!!!!!不要Tab Python代码缩进   这两天python-cn邮件列表有一条thread发展的特别长,题目是(地址), ...

Python第一行代码

Python版本:Python 3.6.1 0x01 命令行交互 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计 ...

【转】利用Boost&period;Python将C&plus;&plus;代码封装为Python模块

用Boost.Python将C++代码封装为Python模块 一.     基础篇 借助Boost.Python库可以将C/C++代码方便.快捷地移植到python模块当中,实现对python模块的扩 ...

python爬虫小说代码,可用的

python爬虫小说代码,可用的,以笔趣阁为例子,python3.6以上,可用 作者的QQ:342290433,汉唐自远工程师 import requests import refrom lxml i ...

Python实现C代码统计工具&lpar;四&rpar;

目录 Python实现C代码统计工具(四) 标签: Python 计时 持久化 声明 运行测试环境 一. 自定义计时函数 1.1 整个程序计时 1.2 代码片段计时 1.3 单条语句计时 二. 性能优 ...

Python实现C代码统计工具&lpar;三&rpar;

目录 Python实现C代码统计工具(三) 声明 一. 性能分析 1.1 分析单条语句 1.2 分析代码片段 1.3 分析整个模块 二. 制作exe Python实现C代码统计工具(三) 标签: Py ...

随机推荐

iptables的详细介绍及配置方法&ast;

Firewall(防火墙):组件,工作在网络边缘(主机边缘),对进出网络数据包基于一定的规则检查,并在匹配某规则时由规则定义的处理进行处理的一组功能的组件. 防火墙类型:根据工作的层次的不同来划分,常 ...

DBCP、C3P0、Proxool 、 BoneCP开源连接池的比《转》

简介   使用评价  项目主页  DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用 可以设置最大和最小连接,连接等待时 ...

FindResource函数错误代码:1813-找不到映像文件中指定的资源类型 与LoadResource函数错误代码:1812-指定的映像文件不包含资源区域

HRSRC WINAPI FindResource( _In_opt_  HMODULE hModule, _In_      LPCTSTR lpName, _In_      LPCTSTR lp ...

yii2学习的论坛

http://www.yiifans.com/forum.php http://www.yiichina.com/ http://www.yiichina.com/

Android jar包混淆

具体可参考http://proguard.sourceforge.net/manual/examples.html#library 1.找到android的adt目录下的 D:\soft\adt-bu ...

Extjs4 RowEditing 的使用和更新方法

如何灵活快速的掌握RowEditing组件的应用,应大家的要求,今天给大家具体讲下该组件的使用. 1.创建 var rowEditing = Ext.create('Ext.grid.plugin.R ...

spring MVC cors跨域实现源码解析

# spring MVC cors跨域实现源码解析 > 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就 ...

电脑如何防蹭网?使用防蹭网功能杜绝未知设备连接WiFi

发布时间:2015-09-27 15:24发布者:系统城-shaojing浏览数:733 网络越来越卡?网页打开越来越慢?如果你有以上疑问,那么就要确认自己是不是被"蹭网"了.尽管 ...

小程序App&period;js 传递数据给实例(app异步数据问题)

在最开始初始化的时候,都会触发app.js 这个里面的onload生命方法, 在这个方法里面我们可以获取之前的存储数据/异步请求等等操作, 但是这些操作一般都是需要稍许时间.也就是说在其他界面加载结束 ...

Android 彩色Toast实现

Android默认的Toast太丑了,我们来封装一个花里胡哨的Toast吧,就叫ColoredToast. Github:https://github.com/imcloudfloating/Desi ...

 类似资料: