• urllib2的一些常用方法介绍

    更灵活地使用urllib2
    服务器君一共花费 9.307 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    urllib2模块和urllib模块类似,用来打开URL并从中获取数据。与urllib模块不同的是,urllib2模块不仅可以使用urlopen()函数还可以自定义opener来访问网页。但同时要注意:urlretrieve()函数是urllib模块中的,urllib2模块中不存在该函数。但是使用urllib2模块时一般都离不开urllib模块,因为post的数据需要使用urllib.urlencode()函数来编码。

    下面介绍一下urllib2常用的方法。

    urlopen(url, [,data, [timeout]])

    urlopen()是最简单的请求方式,它打开url并返回类文件对象,并且使用该对象可以读取返回的内容。参数url可以是包含url的字符串,也可以是urllib2.request类的实例。data是经过编码的post数据(一般使用urllib.urlencode()来编码)。timeout是可选的超时期(以秒为单位),供所有阻塞操作内部使用。

    假设urlopen()返回的文件对象u,它支持下面的这些常用的方法:

    • u.read([nbytes]) 以字节字符串形式读取nbytes个数据
    • u.readline() 以字节字符串形式读取单行文本
    • u.readlines() 读取所有输入行然后返回一个列表
    • u.close() 关闭链接
    • u.getcode() 返回整数形式的HTTP响应代码,比如成功返回200,未找到文件时返回404
    • u.geturl() 返回所返回的数据的实际url,但是会考虑发生的重定向问题
    • u.info() 返回映射对象,该对象带有与url关联的信息,对HTTP来说,返回的服务器响应包含HTTP包头。对于FTP来说,返回的报头包含'content-length'。对于本地文件,返回的报头包含‘content-length’和'content-type'字段。

    要注意的是,类文件对象u以二进制模式操作。如果需要以文本形式处理响应数据,则需要使用codecs模块或类似方式解码数据。

    Request (url [data,headers [,origin_req_host ,[unverifiable]]]])

    对于比较简单的请求,urlopen()的参数url就是一个代表url的但如果需要执行更复杂的操作,如修改HTTP报头,可以创建Request实例并将其作为url参数。

    新建Request实例。url为url字符串,data是伴随url提交的数据(比如要post的数据)。不过要注意,提供data参数时,它会将HTTP请求从'GET'改为‘POST’。headers是一个字典,包含了可表示HTTP报头的键值映射(即要提交的header中包含的内容)。originreqhost通常是发出请求的主机的名称,如果请求的是无法验证的url(通常是指不是用户直接输入的url,比如加载图像的页面中镶入的url),则后一个参数unverifiable设为TRUE。

    假设Request实例r,其比较重要的方法有下面几个:

    • r.add_data(data) 向请求添加数据。如果请求是HTTP请求,则方法改为‘POST’。data是向指定url提交的数据,要注意该方法不会将data追教导之前已经设置的任何数据上,而是使用现在的data替换之前的。
    • r.add_header(key, val) 向请求添加header信息,key是报头名,val是报头值,两个参数都是字符串。
    • r.addunredirectedheader(key, val) 作用基本同上,但不会添加到重定向请求中。
    • r.set_proxy(host, type) 准备请求到服务器。使用host替换原来的主机,使用type替换原来的请求类型。

    自定义Opener

    基本的urlopen()函数不支持验证、cookie或其他的HTTP高级功能。要支持这些功能,必须使用build_opener()函数来创建自己的自定义Opener对象。

    install_opener(opener) 安装opener作为urlopen()使用的全局URL opener,即意味着以后调用urlopen()时都会使用安装的opener对象。opener通常是build_opener()创建的opener对象。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [PHP程序设计] PHP中的Hash算法 3 个条目
  2. [Python程序设计] Tornado源码解析 23 个条目
  3. [数据库技术] 数据库范式篇 5 个条目
  4. [Python程序设计] Python语言概述 6 个条目
  5. [PHP程序设计] CodeIgniter与PHP框架设计 5 个条目
  6. [PHP程序设计] 命令式编程范式 6 个条目
  7. [数据库技术] 无限级分类数据表设计 4 个条目
  8. [PHP程序设计] Nginx基本操作释疑 7 个条目
  9. [PHP程序设计] PHP数组的遍历 7 个条目
  10. [JavaScript程序设计] 关于HTTP Keep-Alive 6 个条目
  11. [Python程序设计] Python数据类型 11 个条目
  12. [Python程序设计] Django 入门知识浅介 10 个条目
窗口 -- [博客]