Python2和Python3中urllib库的区别

前言

在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包位置有些不同。

对于Python2

Python2中提供了urllib和urllib2两个模块。

  • urlencode方法所在位置为:
urllib.urlencode(values)    # 其中values为所需要编码的数据,并且只能为字典
  • 例如模拟登陆CSDN网站,示例程序如下
import urllib2

values = {"username":"962457839@qq.com","password":"XXXX"}
data = urllib.urlencode(values) 
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()

对于Python3

Python3中也有urllib和urllib3两个库,其中urllib几乎是Python2中urllib和urllib2两个模块的集合,所以我们最常用的urllib模块,而urllib3则作为一个拓展模块使用。

  • urlencode方法所在位置
urllib.parse.urlencode(values)
  • 例如模拟登陆CSDN网站,示例程序如下:
from urllib import request
from urllib import parse
from urllib.request import urlopen

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
values = {'username': '962457839@qq.com', 'password': 'XXXX'}
data = parse.urlencode(values).encode('utf-8')  # 提交类型不能为str,需要为byte类型
url = 'https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn'
#data参数如果要传必须传bytes(字节流)类型的,如果是一个字典,先用urllib.parse.urlencode()编码。
request = request.Request(url, data,headers = headers,method='GET')
response = urlopen(request)
print(response.read().decode())

参考:https://blog.csdn.net/IMW_MG/article/details/78555375

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python程序员杂谈

python web开发环境搭建-web HelloWorld

  我的环境是:wamp1.7.4+python-2.5.2.+ mod_python-3.3.1.win32-py2.5-Apache2.2

24430
来自专栏Python程序员杂谈

python正则表达式替换字符串

一个实例,有一段html代码,不符合xml格式规范,所以要用python对它进行下转换。 其中要转换的地方有:

1.7K30
来自专栏Python程序员杂谈

ubuntu设置python2.5环境变量

转到python开发了,对windows的依赖就不是特别大了,因此使用一下linux对工作也是没有影响的。所以,就在新买的thinkpad上装了一个ubuntu...

26340
来自专栏Python程序员杂谈

python项目练习八:使用XML-RPC进行远程文件共享

这是个不错的练习,使用python开发P2P程序,或许通过这个我们可以自己搞出来一个P2P下载工具,类似于迅雷。说到迅雷,关于其原理不知道大家是否了解,如果你不...

17530
来自专栏Python程序员杂谈

python项目练习十:DIY街机游戏

终于来到了最后一个项目,看看前面的那些练习,也算是熟悉了python的基本操作,也知道python能干哪些事情,最后一个项目相比于以前的稍微复杂些,但是任何一个...

16930
来自专栏Python程序员杂谈

python项目练习九:文件共享2-GUI版本

python里面的界面库有很多,如wxPython、wgGTK、tkinter,还有QT,按照书中的实例,我也使用wxPython来做界面。话说有了这个界面之后...

15610
来自专栏后端沉思录

python小白爬取某东bra数据分析

最近用python爬取了某东上的x款bra的用户评论,然后进行了size、color分析,直接上图:

18930
来自专栏Python程序员杂谈

python项目练习七:自定义公告板

这依然是一个cgi的项目,有了前面的一个项目作为基础,这个里面没有什么难点。不过,和书上不同的是,我这里使用的数据库是mysql,所以有兴趣的童鞋,可以参考一下...

15930
来自专栏未闻Code

日常技巧记录-2018.08

Docker镜像Standalone-chrome找不到Chrome的问题,解决办法:

9730
来自专栏Python程序员杂谈

python监听usb鼠标插入

在刚把电脑系统转为linux之后,一直觉得需要通过命令:sudo rmmod psmouse来完成禁用触摸板的操作实在是太不方便了,于是就想着用一个python...

40420

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励