当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)相关推荐

  1. Python 网络爬虫笔记8 -- 股票数据定向爬虫

    Python 网络爬虫笔记8 – 股票数据定向爬虫 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyth ...

  2. Python 网络爬虫笔记1 -- Requests库

    Python 网络爬虫笔记1 – Requests库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyt ...

  3. Python 网络爬虫笔记11 -- Scrapy 实战

    Python 网络爬虫笔记11 – Scrapy 实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...

  4. Python 网络爬虫笔记10 -- Scrapy 使用入门

    Python 网络爬虫笔记10 – Scrapy 使用入门 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接: ...

  5. Python 网络爬虫笔记9 -- Scrapy爬虫框架

    Python 网络爬虫笔记9 – Scrapy爬虫框架 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...

  6. Python 网络爬虫笔记6 -- 正则表达式

    Python 网络爬虫笔记6 – 正则表达式 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Python网 ...

  7. Python 网络爬虫笔记5 -- Beautiful Soup库实战

    Python 网络爬虫笔记5 – Beautiful Soup库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. ...

  8. Python 网络爬虫笔记4 -- 信息标记与提取

    Python 网络爬虫笔记4 – 信息标记与提取 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pytho ...

  9. Python 网络爬虫笔记3 -- Beautiful Soup库

    Python 网络爬虫笔记3 – Beautiful Soup库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程 ...

最新文章

  1. 行人检测 读书笔记 综述
  2. 服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...
  3. CF204E-Little Elephant and Strings【广义SAM,线段树合并】
  4. 薅羊毛 Colab使用外部数据的7种方法!
  5. 计算机外围设备哪两类,《微机原理与接口技术》课后习题答案
  6. 跳转语句_javascript流程语句(单分支)
  7. mips指令分类和寻址大全
  8. 在生意不好做的情况下, 你会选择坚持,还是去重新找一个新行业?
  9. 【渝粤教育】广东开放大学 演绎娱乐经验管理 形成性考核 (49)
  10. 使用Async方法 Using Async Methods 精通ASP-NET-MVC-5-弗瑞曼 Listing 4-32.
  11. 更新maven卡在18不动_Android Studio maven-metadata.xml 卡着不动原因和解决方法
  12. LINUX FFMPEG编译汇总(中等,只编译必要的部分)
  13. 你应该知道的Redis事务
  14. 系统没有wmi服务器,Win8系统下sql 2008 MOF编译器无法连接WMI服务器怎么办
  15. 2021-09-11
  16. mac移动硬盘安装linux系统安装教程,移动硬盘上安装ubuntu系统
  17. ONFI ZQ Calibration
  18. L2/L2+级ADAS市场爆发,国产芯片厂商迎来了关键时刻
  19. 微信小程序 某个页面直接返回首页(微信小程序回退到首页)
  20. 台式计算机的机箱分为,电脑机箱尺寸分类

热门文章

  1. 关于eclipse中的图片路径
  2. 【ggplot】复杂柱状图:自定义颜色、标签、位置、坐标轴和主题
  3. 动态修改窗口标题和类名
  4. pwnable-shellshock
  5. java HashMap集合的使用
  6. 作为米粉,我不得不说一说小米11全系,小米还是最初的小米呀
  7. Spring Cloud学习(一) ZuulFilter 过滤器详解
  8. 【卡尔曼滤波】离散线性系统的卡尔曼滤波
  9. 网站域名过户查询_域名知识问答之域名过户
  10. C# 实现像QQ一样隐藏窗体