搜索是关键字的编码和解码

学点东西真的是太难了,真心膜拜那种2个礼拜就能搞定一门语言的大神。

今天遇到的问题是,使用搜索接口时,一些网站会为了兼容性,会将搜索的关键字转码。转码后拼接到URL里,然后进行访问。

1.在python3.x中,编码使用的函数是urllib.parse.urlencode(),解码使用的是urllib.parse.unquote()

2.urlencode()的参数形式是kv型的。

3.一个小坑。网页的编码形式可能是不一样的,所以在编码时,不同的网页编码形式下的文本,通过函数得到的值可能是不同的。同理,解码是如果不能选择对应的网页编码形式,那解出来的值也是不正确的。幸运的是,一般网站的编码形式是一样的。只要统一了编码格式,就不会有问题。

附一个例子:

https://www.baidu.com/s?ie=utf-8&mod=1&isbd=1&isid=b89fc5cb0002cb31&ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=62095104_15_oem_dg&wd=%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9&oq=%25E5%2593%2594%25E5%2593%25A9%25E5%2593%2594%25E5%2593%25A9&rsv_pq=b89fc5cb0002cb31&rsv_t=f2a5yaijut%2BMn4jB5s4LRth%2BkQI4DlOTNYnIOz5Q1Cvvvu%2Bh5wSVdnqdpT286QolYpedXO%2F%2FmU7X&rqlang=cn&rsv_enter=0&prefixsug=%25E5%2593%2594%25E5%2593%25A9%25E5%2593%2594%25E5%2593%25A9&rsp=3&bs=%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9&rsv_sid=&_ss=1&clist=&hsug=&f4s=1&csor=4&_cr1=35583

一样一长段是百度的某个搜索时的url,我们都知道,百度的搜索关键字对应字段是wd,所以想知道我的关键字是什么,只要解析%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9这一串。

函数的写法:urllib.parse.unquote(‘%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9‘,‘utf-8‘),print之后,可以看到我们搜索的关键字是:哔哩哔哩

同理搜索时,只要将wd字段修改。

比如我们要搜索‘YYF头有多重’,写法为:

urllib.parse.urlencode({‘wd‘:‘‘YYF头有多重‘},‘utf-8‘),print之后为:wd=YYF%E5%A4%B4%E6%9C%89%E5%A4%9A%E9%87%8D,OK搞定。

最后,就是要正确区分unquote()和quote()函数。

学东西真是一步一个坎,没准又快放弃了。

原文地址:https://www.cnblogs.com/marseilles/p/10099941.html

时间: 2024-10-09 17:40:51

搜索是关键字的编码和解码的相关文章

javascript对url进行编码和解码

这里总结下JavaScript对URL进行编码和解码的三个方法. 为什么要对URL进行编码和解码 只有[0-9[a-Z] $ - _ . + ! * ' ( ) ,]以及某些保留字,才能不经过编码直接用于URL,其他的字符如果不经过编码可能会导致各种各样的问题. 很容易找到编码和解码的例子,比如在搜索引擎搜索的中文关键字,复制网址之后再粘贴会发现该URL已经被转码. escape()和unescape() 原理:对除ASCII字母.数字.标点符号[@  *  _  +  -  .  /]以外的其

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() 获取文件编码,f.encoding() 获取文件在内存中的编号,f.fileno() 获取文件终端类型(tty.打印机等),f.isatty() 获取文件名,f.name() 判断文件句柄是否可移动(tty等不可移动),f.seekable() 判断文件是否可读,f.readable() 判断文件是

哈夫曼编码与解码

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #define MAXNUM 60 typedef struct { char ch; int weight; //权值,这个字符出现的频率 int parent; int left; int right; }HuffNode; typedef struct { char code[MAXNUM]; int st

SNMP++ 02-SNMP中INTEGER的BER编码与解码

阅读完本文你可以学到: (1)BER 中 INTEGER 的编码规则(其中1.2.3主要引自<ASN.1编码规则详解.doc>(作者不详,该文档可在CSDN资源中搜索到)). (2)SNMP 中 INTEGER 的编码及解码实现(主要参考 net-snmp源码和 snmp++源码).本文仅对编码相关函数进行了详细的解释.理解它,或许是我们走向自己实现 SNMP 协议的第一步. 特别声明: (1)感谢<ASN.1编码规则详解.doc>作者所做的工作. (2)感谢所有为 net-snm

python第三天学习复习,集合set,文件操作,函数(普通函数,递归,高阶函数),字符编码和解码

三元运算 age = 23 #就是if else的简单写法 a = age if age < 20 else 25 集合 set #集合是无序切不重复的, #当对列表去重复的时候,可以直接使用 set(list),就将list转为set,并去除中间重复的 list = [1,2,3,4,5,5,6,7,8,9,1] s = set(list) 运行结果:可以发现将 list中重复的去掉,并且类型变成set,再使用list(set),转为list 集合操作 # Author:zylong set1

win api 实现 base64编码、解码

最近在写小玩意,用到了base64编码,但是考虑到体积大小,网上的多种实现都是利用开源的代码,这就增加了其大小.我想win api能不能实现base64编码.解码.通过一通乱搜,还有收获.就有了以下代码 #pragma comment(lib,"crypt32.lib") LPSTR Base64Encode(LPBYTE lpBuffer,DWORD dwLen) { DWORD dwNeed; LPSTR lpBase64Str ; DWORD dwIndex ; DWORD dw

了解URL编码的基本概念,在javascript和java程序中使用内置的API进行编码和解码

1.URL编码的基本概念 URL只能使用US-ASCII 字符集来通过因特网进行发送.由于URL常常会包含 ASCII 集合之外的字符,URL必须转换为有效的 ASCII 格式.URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符.URL 不能包含空格,URL 编码通常使用 + 来替换空格.所谓URL编码,就是将非US-ASCII字符和US-ASCII中的特殊字符,用相应的字符集编码来表示.比如,汉字"你",如果用UTF-8编码,出现在URL

【转】C/C++ URL编码,解码(提取自PHP)

//解码 //头文件自己加上的 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <string> #include <iostream> using namespace std; /* {{{ php_htoi  */ static int php_htoi(char *s) { int value; int c; c = ((unsigned char *)

H.264硬编码&硬解码

Firefly-RK3288拥有强大的VPU(视像处理器),能够流畅实现720P和1080P视频的H.264编解码: 而H.264的压缩率更高,可以更大程度更小视频的空间占用. 详细看视频演示 1. 演示介绍 基于Firefly开发板:视频监控演示: 需要两块开发板:一块开发板摄像头采集+硬编码,网络传输. 另一块开发板 网络接收.硬解码+显示. Demo中采样5GHz Wi-Fi传输,摄像头使用OV13850,或UVC camera 2. H.264技术介绍 H.264是一种高性能视频编解码技