学点东西真的是太难了,真心膜拜那种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