技术标签: python
当url地址含有中文或者“/”的时候,这是就需要用做urlencode一下编码转换。
一、urlencode
urlencode的参数是词典,它可以将key-value这样的键值对转换成我们想要的格式。如果你用的是python2.*,urlencode在urllib.urlencode。如果使用的是python3,urlencode在urllib.parse.urlencode
例如
import urllib.parse
data={"name":"王尼玛","age":"/","addr":"abcdef"}
print(urllib.parse.urlencode(data))
输出为
addr=abcdef&name=%E7%8E%8B%E5%B0%BC%E7%8E%9B&age=%2F
如果只想对一个字符串进行urlencode转换,怎么办?urllib提供另外一个函数:quote()
print(urllib.parse.quote("hahaha你好啊!"))
输出为
hahaha%E4%BD%A0%E5%A5%BD%E5%95%8A%EF%BC%81
二、unquote
当urlencode之后的字符串传递过来之后,接受完毕就要解码了——urldecode。urllib提供了unquote()这个函数,可没有urldecode()!
import urllib.parse
data={"name":"王尼玛","age":"/","addr":"abcdef"}
print(urllib.parse.urlencode(data))
print(urllib.parse.quote("hahaha你好啊!"))
print(urllib.parse.unquote("hahaha%E4%BD%A0%E5%A5%BD%E5%95%8A%EF%BC%81"))
输出
addr=abcdef&name=%E7%8E%8B%E5%B0%BC%E7%8E%9B&age=%2F
hahaha%E4%BD%A0%E5%A5%BD%E5%95%8A%EF%BC%81
hahaha你好啊!
在做urldecode的时候,看unquote()这个函数的输出,是对应中文在gbk下的编码,在对比一下quote()的结果不难发现,所谓的urlencode就是把字符串转为gbk编码,然后把\x替换成%。如果你的终端是utf8编码的,那么要把结果再转成utf8输出,否则就乱码。
可以根据实际情况,自定义或者重写urlencode()、urldecode()等函数。
三、小例子
如果要抓取百度上面搜索关键词为“王尼玛的体重”的网页, 则代码如下
import urllib
import urllib.request
data={}
data['word']="王尼玛的体重"
url_values=urllib.parse.urlencode(data)
url="http://www.baidu.com/s?"
full_url=url+url_values
data=urllib.request.urlopen(full_url).read()
data=data.decode('UTF-8')
print(data)
在贵金属投资市场上,或许有很多投资者表示贵金属技术分析很难理解。特别是刚入门的新手,可能一开始对其并不容易理解,其实这可以理性地看待。贵金属技术分析是根据历史数据,以及开盘价、收盘价、最高价、最低价,利用数学统计的方法来进行综合统计计算。 一般进行分析时需要抛弃主观观念,客观地去分析价格的走向。虽然它不能够左右价格走向,但是可以由价格决定它的趋势走向。所以能不能学好贵金属技术分析,是多方面作用的结果。但需要提醒大家的是:用贵金属技术分析法,只能分析它的趋势,意味着不能完全依赖技术分析来行情作为决策重
介绍:默认定位接口是淘宝的,大家可以自行更换。用来娱乐一下还可以,定位只能精准到区级。很简洁的源码,前端探针后台查看IP。安装方式:修改config.php里面的数据库配置,导入ip.sql文件即可。探针2.这套源码稍微复杂一点他可以查IP 精确位置上传源码源码里配置一下数据库导入sql后台登录方法 域名加/admin 例如域名是hk.com 那么后台登录方法 hk.com/admin之后搭建完成 后台默认账号admin密码w
单机安装基于LNMP结构的WordPress网站基本环境准备创建虚拟机,并配置防火墙、SELINUX、主机名、IP地址、yum[[email protected] ~]# clone-vm7 # 克隆一台7版本的虚拟机Enter VM number: 1VM tedu_node01 ... ...[[email protected] ~]# virsh start tedu_node01 # 启动虚拟机[[email protected] ~]# virsh console tedu_node01
1.Zeebe是什么?Camunda公司研发的工作流引擎Zeebe,目标是对微服务的编排。具体详细介绍可以参考官网:https://zeebe.io/what-is-zeebe/2.背景随着微服务的发展,大家都单体服务进行了拆分,解耦,这样做引发了另外的一个问题:之前一个接口实现的功能,现在需要调用几个接口才能完成。如何解决这些原子性的接口呢?这时候我们想到了Zeebe服务。3...
博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI这是一位正在国际空间站执行任务的宇航员。再拉近一点,猜得出他身边这个一直在亮的小东西是什么吗?——树莓派!只不过,这是树莓派的太空...
thinkphp新版本去掉了原来定义的__ROOT__,__PUBLIC__等变量,所以,为了方便的引入静态文件,需要自定义这些变量。'tpl_replace_string' => [ '__ROOT__' => explode('/public',$_SERVER["REQUEST_URI"])[0], ]话不多说,上代码在config/temp...
Chrome 今天出来了。人们潮水般的下载 Chrome、安装、使用和发表评论。有人不禁担心 Google 和 Mozilla 的关系,因为 Chrome 的推出就表示 Firefox 多了一个竞争者。更有人担心万一 Google 和 Mozilla 不和,Google 停止对 Mozilla 进行投资,Mozilla 将难以为继,甚至 Firefox 就此终结。这样的说法肯定是不对的。首...
原文:Enforcing toString()译文:javascript 中强制执行 toString()译者:singleseekerJavascript通常会根据方法或运算符的需要而自动把值转成所需的类型,这可能导致各种错误。 Brian McKenna (@puffnfresh) suggests 提供了下列测试代码:Object.prototype.va
我开始听到很多来自技术媒体的声音,警告说新兴的边缘计算技术将使云计算处于危险之中。 作为在网络两边工作的人,我想澄清一些事情。 确实,一些有意义的处理正在移到网络的边缘。 例如,以一个具有两个方面的车辆管理系统为例:边缘计算端和云/中央计算端。 两者都有不同的作用。 [ 什么是云计算? 您现在需要知道的一切 。 | 另外:InfoWorld的David Linthicum解释了什么是边...
背景:手下新人在初次使用springboot整合redis,大部分人习惯从网上检索到一份配置,然后不知其所以然的复制粘贴到项目中,网上搜索到的配置良莠不齐但又万变不离其宗。由于springboot最大化地简化了整合redis需要的配置,在用户只需要在配置文件(application.*)中配置少量参数就可以使用官方默认提供的RedisTemplate和StringRedisTemplate来操作redis。由于官方提供的*RedisTemplate提供的功能有限,难以针对java的复杂数据类型进行序列化,且
文章在微信公众号“硬件工程师炼成之路”首发,敬请关注。前一段时间写了一下Buck电路的振铃,不少同学给我留了作业,让我说说Boost。今天就来看看Boost电路。友情提示:本文字数1W+了,有点长,请点赞收藏加关注。我们知道,不论是buck,还是boost电路,总会有一些公式,用得最多的就是电感的感量计算,电流纹波,输入电压纹波大小,输出电压纹波大小等等。这些公式,在我们设计的时候会去算一算,很多的DCDC的芯片手册里面也会有这些公式。就我自己而言,我是很讨厌背公式的,相信大