参考博客:https://blog.csdn.net/chendong_/article/details/51973499

1.1 urllib2发送get请求

# -*- coding:UTF-8 -*-
import urllib2 response = urllib2.urlopen("https://www.baidu.com/")
print response.read()

urllib2.urlopen(url) 不带参数的get请求 :法1

# -*- coding:UTF-8 -*-

import urllib2
import urllib url = 'http://127.0.0.1:8000/login/?'
para = {'name':'zhangsan','age':100}
req = urllib2.Request(url + urllib.urlencode(para))
page = urllib2.urlopen(req)
print page.read() # 服务器端结果:{u'name': [u'zhangsan']

urllib2.Request(url,data) 带参数的get请求:法2

1.2 urllib2发送post请求

# -*- coding:UTF-8 -*-

import urllib2
import urllib
values = {'username':'zhangsan','pwd':''}
data = urllib.urlencode(values)
url = "http://127.0.0.1:8000/login/"
request = urllib2.Request(url, data)
response = urllib2.urlopen(request)
print response.read()

urllib2发送post请求

import urllib2
import json data = {
'a': 123,
'b': 456
}
headers = {'Content-Type': 'application/json'}
request = urllib2.Request(url='url', headers=headers, data=json.dumps(data))
response = urllib2.urlopen(request)

post方式发送json参数

1.3 高级用法:设置Headers

# -*- coding:UTF-8 -*-

import urllib2
import urllib url = 'http://127.0.0.1:8000/login/'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {"username":"1098918523@qq.com", "password":"341204baiduhi"}
headers = {'User_Agent': user_agent}
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
print response.read()

urllib2设置请求头信息

1.4 urllib2发送put请求

def send_put(url,values):
data = {
'a': 123,
'b': 456
}
headers = {'Content-Type': 'application/json'}
request = urllib2.Request(url=url, headers=headers, data=json.dumps(data))
request.get_method = lambda: 'PUT'
response = urllib2.urlopen(request)
print response.read() if __name__=="__main__":
values = {'name':'新添加组01','fid':''}
url = "http://127.0.0.1:8000/api/operate/dept"
send_put(url,values)

urllib2发送put请求

1.5 python2中urllib2对url进行urlencode与unquote

  1、encode和unquote仅对一个字符串进行转换

import urllib
s = '张三'
s_encode = urllib.quote(s)
print s_encode
# 执行结果:%E5%BC%A0%E4%B8%89

encode

#2、url unquote
import urllib
s = '%E5%BC%A0%E4%B8%89'
s_decode = urllib.unquote(s)
print s_decode
# 执行结果:张三

unquote

  2、urlencode 

# 1、urlencode
import urllib
data={"name":"张三","sex":"男"}
print urllib.urlencode(data)
# 执行结果:name=%E5%BC%A0%E4%B8%89&sex=%E7%94%B7 # 2、unquote解析url
data = 'name=%E5%BC%A0%E4%B8%89&sex=%E7%94%B7'
print urllib.unquote(data)
# 执行结果:name=张三&sex=男

urlencode

07:urllib与urllib2基本使用的更多相关文章

  1. [转]Python中urllib与urllib2的区别与联系

    引用文章1:http://my.oschina.net/u/558071/blog/144792 引用文章2:http://zhuoqiang.me/python-urllib2-usage.html ...

  2. python基于http协议编程:httplib,urllib和urllib2<转>

    httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. httplib.HTTPConnecti ...

  3. Python:urllib和urllib2的区别

    urllib和urllib2都是处理url请求的两个模块,但是相互之间存在不同,不能相互取代 urllib2可以接受一个Reuqest类的实例来设置URL请求的headers,urllib仅可以接受U ...

  4. Python标准库之urllib,urllib2

    urllib模块提供了一些高级接口,用于编写需要与HTTP服务器交互的客户端.典型的应用程序包括从网页抓取数据.自动化.代理.网页爬虫等. 在Python 2中,urllib功能分散在几个不同的库模块 ...

  5. Python:urllib和urllib2的区别(转)

    原文链接:http://www.cnblogs.com/yuxc/ 作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版.今天看到老外写的一篇<Python: ...

  6. Python urllib和urllib2模块学习(二)

    一.urllib其它函数 前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍.当然 urllib 还有一些其它很有用的辅助方法,比如对 ur ...

  7. Python urllib和urllib2模块学习(一)

    (参考资料:现代魔法学院 http://www.nowamagic.net/academy/detail/1302803) Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用 ...

  8. 深入理解urllib、urllib2及requests

    urllib and urllib2 区别 –博主提示:下面的是python2中的用法,python3需要做出相应修改. urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功 ...

  9. python urllib和urllib2 区别

    python有一个基础的库叫httplib.httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现 ...

  10. httplib,urllib和urllib2

    一.httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. import httplib con ...

随机推荐

  1. CCCC L2-013. 红色警报 连通分量

    题解:将问题转化成连通分量.每次失去一座城市,切断其所有的边,算一次现在的连通分量.若增量大于1,则发出警报. 至于如何算连通分量,直接用tarjan模板 坑://我昨天晚上半夜敲的模板,把一个算所有 ...

  2. CodeForces - 847B Preparing for Merge Sort 二分

    http://codeforces.com/problemset/problem/847/B 题意:给你n个数(n<2e5)把它们分成若干组升序的子序列,一行输出一组.分的方法相当于不断找最长递 ...

  3. Oracle管理监控之设置linux启动时自动启动oracle服务器

    1. 修改dbstart脚本(第78行):$ vi $ORACLE_HOME/bin/dbstartORACLE_HOME_LISTNER=$ORACLE_HOME 2. 修改/etc/oratab为 ...

  4. LCA——最近公共祖先

    今天终于把倍增的LCA搞懂了!尽管周测都没写,尽管lca其实很简单,但这也是进度君的往前一点点的快乐.学渣的呻吟. 倍增的lca其实关键就在于二进制的二进制的拆分(显然是两次的拆分,很奇妙,懂二进制的 ...

  5. 02 - nginx - 反向代理、限速

    一.Nginx反向代理 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器. 代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中, ...

  6. 1128 - Greatest Parent---LightOj(LCA+离线算法)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1128 给你一颗树,树的每个节点都有一个权值,树根是节点0,权值为1,树中每个节点的权值 ...

  7. pandas介绍及环境部署

    pandas介绍 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的 ...

  8. Python装饰器与面向切面编程(转)

    add by zhj: 装饰器的作用是将代码中可以独立的功能独立出来,实现代码复用,下面那个用于统计函数运行时间的装饰器就是很好的例子,我们不用修改原有的函数和调用原有函数的地方,这遵循了开闭原则.装 ...

  9. virtualenv 使用

    一.安装 pip install virtualenv 因为我已经安装了pip,那么就直接用pip来安装了,简单方便. 其它的安装方式请参考官方网站:http://www.virtualenv.org ...

  10. java 原子类

    一.基本类原子操作 AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference<V>对boolean,Integer,long,refer ...