python urllib2.request_Python自动化测试 (九)urllib2 发送HTTP Request

urllib2 是Python自带的标准模块, 用来发送HTTP Request的。  类似于 .NET中的,  HttpWebRequest类

urllib2 的优点

Python urllib2 发出的HTTP Request, 能自动被Fiddler截获, 方便了调试。

Python 可以自动处理Cookie

urllib2 的缺点

Python urllib2 发出的http Request, 中的header 会被修改成“首字母大写”,

比如你的代码里写的header 是: content-TYPE=application/x-www-form-urlencoded ,  会被修改为 Content-Type=application/x-www-form-urlencoded

实例一,  Get方法, 并且自定义header

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

importurllib2

request= urllib2.Request("http://www.baidu.com/")

request.add_header('content-TYPE', 'application/x-www-form-urlencoded')

response=urllib2.urlopen(request)printresponse.getcode()printresponse.geturl()print response.read()

实例二, post方法

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

importurllib2importurllib

request= urllib2.Request("http://passport.cnblogs.com/login.aspx")

request.add_header('content-TYPE', 'application/x-www-form-urlencoded')

data={"tbUserName":"test_username", "tbPassword":"test_password"}

response=urllib2.urlopen(request, urllib.urlencode(data))printresponse.getcode()printresponse.geturl()print response.read()

实例三: Cookie 的处理

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

importurllib2importurllibimportcookielib

cj=cookielib.CookieJar()

opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

request= urllib2.Request("https://dynamic.12306.cn/otsweb/")

request.add_header('content-TYPE', 'application/x-www-form-urlencoded')

data={"tbUserName":"test_username", "tbPassword":"test_password"}

response=opener.open(request, urllib.urlencode(data))#send again, you will see cookie sent to web server

response =opener.open(request, urllib.urlencode(data))printresponse.getcode()printresponse.geturl()print response.read()

实例四:如何处理跳转

创建Opener时, ul2.HTTPRedirectHandler是默认被加上的handler之一


版权声明:本文为weixin_34665627原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。