现在的位置: 首页 > 软件测试 > 测试工具 > 软件测试 > 正文

Python urllib2库使用小结

2015年01月06日 测试工具, 软件测试 ⁄ 共 1267字 ⁄ 字号 评论 1 条 ⁄ 阅读 2,174 次

1.      urllib2库简介

urllib2是python自带的一个访问网页及本地文件的库。

urllib相比,显著区别之处在于:

1) urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,用urllib时不可以伪装User Agent字符串等。

2) urllib提供urlencode方法用来encode发送的data,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。

2.      使用介绍

  1. 访问网页简单用法如下:
import urllib2
response = urllib2.urlopen('http://www.baidu.com /')
html = response.read()
  1. 读取本地文件简单用法如下:
import urllib2
f=urllib2.urlopen(‘’)
html = response.read()
  1. 处理Http消息,urlib2也可先构造一个Request对象,之后调用urlopen函数,接收返回的response对象并进行相关处理即可
import urllib2
req = urllib2.Request('http://www.baidu.com')
response = urllib2.urlopen(req)
the_page = response.read()

Request对象允许做两件额外的事:

1)可以向服务器发送数据(data):

urllib2不发送数据时,使用的是GET请求;

发送数据时使用的是POST请求,此时需要data以标准的方式encode,然后作为一个数据参数传送给Request对象(urllib.urlencode)

2)可以向服务器发送额外的信息(metadata),这些信息被当作HTTP头发送:

Header可以通过Request提供的.add_header()方法进行添加(如常见的伪造浏览器UA)

 

综合如上两点,示例脚本如下:

import urllib
import urllib2

values={'user':'test','password':'123456'}
data=urllib.urlencode(values)
req=urllib2.Request('http://www.baidu.com',data)
req.add_header('Accept-Encoding', 'gzip,deflate')
req.add_header('User-Agent','Mozilla/5.0')
response=urllib2.urlopen(req)
result=response.read()

至此,我们就可以简单的使用urllib2构造我们想要的http post消息了。

3.      参考

官方文档地址:https://docs.python.org/2/library/urllib2.html