urllib&urllib2库--python2.X(学习日记1)

http://zhuoqiang.me/python-urllib2-usage.html这是另一篇介绍urllib2大神写的
一.文档说明(转)
二.代码示例

urllib模块提供一些简单的函数从url中读取数据,但是urllib没有高级定制功能,可以使用urllib2。在urllib中使用最多的是urlopen函数。

 urlopen(str_url,data)访问一个给定的url,然后返回一个只读的文件对象t,文件对象t可以使用read、readline、readlines、close等方法。t.geturl()返回t的url。在data为None,并且str_url为http协议时,urlopen发送一个GET请求,在data不是None时,str_url的协议必须是http,urlopen则发送的是POST请求,data的数据必须是URL编码形式,一般可以用urlencode函数处理data数据。

 urlencode(query)以query的url编码形式返回一个字符串,query可以是一个由(key/value)数据对组成的序列。这也是urllib用的比较多的函数。

 urlretrieve(str_url,filename,data)类似urlopen,但是返回的是一个数据对(f,m),f是一个指定到本地文件系统上的一个文件的路径,m是mimetools模块message类的一个实例。filename为None时,urlretrieve将把提取的数据复制到一个临时的本地文件中,而f是该临时文件的本地路径,如果filename不是None时,将把提取的数据复制到名为filename的文件中。

 urlcleanup()清除urlretrieve函数的缓存。

urllib2比urllib功能要丰富,urllib2提供了一个和urllib.urlopen()类似的函数也叫urlopen。要想自定义urllib2,则在调用urlopen函数之前,使用build_opener()和install_opener()函数安装被组合到一个opener的任意数量的处理程序。

1.handler类,这个类可以用作任何自定义类的超类。

   openerdirector类的实例d可以收集handler类的实例,并综合使用这些实例打开各种协议的url。通常可以通过build_opener函数创建实例d,然后调用Install_opener函数安装该实例。

   build_opener(handler)创建并返回一个opendirector类的一个实例和给定的参数handler,每个程序都可以是basehandler类的一个子类,可以不带参数进行实例化。

   install_opener(opener)安装opener作为进一步调用urlopen的打开程序,opener可以是request类的一个实例 

   urlopen(str_url,data)行为和urllib.urlopen一致,不过自定义行为是通过opener和handler类实现的。

2.Request类,可以向urlopen函数传递Request类的一个实例,而不是一个url字符串,这样可以具体的实例化一个url。 Request(str_url,data,hander),str_url是request类这个实例具体化的一个url,在没有data和hander的情况下就和调用urllib2.urlopen(str_url)效果一样。如果data不为None,request将对新实例隐式调用其方法add_data(data)。hander必须是一个从首部名称到首部值的映射。

   urllib2.HTTPCookieProcessor(cookiejar)一个管理http cookie的类。默认情况下使用cookielib.CookieJar对象。


    cookielib模块定义了一个可以自动加载http cookies。为存储和管理cookie提供了客户端支持。该模块可以提供存储cookie的对象,以便urllib包配合使用。

    CookieJar()管理HTTP cookie值,存储HTTP请求生成的cookie,向传出的HTTP请求添加cookie对象,整个cookie都存储在内存中,对cookiejar实例进行回收后cookie的内容也将被回收。

    FileCookieJar(filename)创建filecookiejar实例,将cookie存储到文件中,filename是文件名。 

代码实例

import urllib2
url = "www.baidu.com"
#
response1=urllib2.urlopen(url)
print response1.getcode()
print len(response1.read())
#
request = urllib2.Request(url)
request.add_header("user_agent","Mozilla/5.0")
response2 = urllib2.urlopen(request)
print response2.getcode()
print len(response2.read())
#
cj=cookielib.Cookiejar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
response3=urllib2.urlopen(url)
print response3.getcode()
print response3.read()
print cj
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值