python urldecode_Python 爬虫笔记2一(编码转码urlencode与unquote)
当url地址含有中文或者“/”的时候,这是就需要用做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
当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)
python urldecode_Python 爬虫笔记2一(编码转码urlencode与unquote)相关推荐
- Python 网络爬虫笔记8 -- 股票数据定向爬虫
Python 网络爬虫笔记8 – 股票数据定向爬虫 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyth ...
- Python 网络爬虫笔记1 -- Requests库
Python 网络爬虫笔记1 – Requests库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyt ...
- Python 网络爬虫笔记11 -- Scrapy 实战
Python 网络爬虫笔记11 – Scrapy 实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...
- Python 网络爬虫笔记10 -- Scrapy 使用入门
Python 网络爬虫笔记10 – Scrapy 使用入门 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接: ...
- Python 网络爬虫笔记9 -- Scrapy爬虫框架
Python 网络爬虫笔记9 – Scrapy爬虫框架 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...
- Python 网络爬虫笔记6 -- 正则表达式
Python 网络爬虫笔记6 – 正则表达式 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Python网 ...
- Python 网络爬虫笔记5 -- Beautiful Soup库实战
Python 网络爬虫笔记5 – Beautiful Soup库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. ...
- Python 网络爬虫笔记4 -- 信息标记与提取
Python 网络爬虫笔记4 – 信息标记与提取 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pytho ...
- Python 网络爬虫笔记3 -- Beautiful Soup库
Python 网络爬虫笔记3 – Beautiful Soup库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程 ...
最新文章
- 行人检测 读书笔记 综述
- 服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...
- CF204E-Little Elephant and Strings【广义SAM,线段树合并】
- 薅羊毛 Colab使用外部数据的7种方法!
- 计算机外围设备哪两类,《微机原理与接口技术》课后习题答案
- 跳转语句_javascript流程语句(单分支)
- mips指令分类和寻址大全
- 在生意不好做的情况下, 你会选择坚持,还是去重新找一个新行业?
- 【渝粤教育】广东开放大学 演绎娱乐经验管理 形成性考核 (49)
- 使用Async方法 Using Async Methods 精通ASP-NET-MVC-5-弗瑞曼 Listing 4-32.
- 更新maven卡在18不动_Android Studio maven-metadata.xml 卡着不动原因和解决方法
- LINUX FFMPEG编译汇总(中等,只编译必要的部分)
- 你应该知道的Redis事务
- 系统没有wmi服务器,Win8系统下sql 2008 MOF编译器无法连接WMI服务器怎么办
- 2021-09-11
- mac移动硬盘安装linux系统安装教程,移动硬盘上安装ubuntu系统
- ONFI ZQ Calibration
- L2/L2+级ADAS市场爆发,国产芯片厂商迎来了关键时刻
- 微信小程序 某个页面直接返回首页(微信小程序回退到首页)
- 台式计算机的机箱分为,电脑机箱尺寸分类