python urllib2 模块实例简介
Posted on 2011 年 02 月 18 日 by admin
简介:
urllib2 是 python 的一个获取 url (Uniform Resource Locators ,统一资源定
址器)的模块。 它用 urlopen 函数的形式提供了一个非常简洁的接口。 这使得用
各种各样的协议获取 url 成为可能。它同时 也提供了一个稍微复杂的接口来处
理常见的状况 - 如基本的认证, cookies ,代理,等等。这些都是由叫做 opener
和 handler 的对象来处理的。
以下是获取 url 最简单的方式:
import urllib2
response = urllib2.urlopen('http://blog.chenpeng.info/')
html = response.read()
许多 urlib2 的使用都是如此简单(注意我们本来也可以用一个以” ftp: ””file :”
等开头的 url 取代”HTTP”开头的 url ). 然而,这篇教程的目的是解释关于 HTTP
更复杂的情形。 HTTP建基于请求和回应( requests &responses )- 客户端制造
请求服务器返回回应。 urlib2 用代 表了你正在请求的 HTTP request 的 Request
对象反映了这些。 用它最简单的形式, 你建立了一个 Request 对象来明确指明你
想要获取的 url 。调用 urlopen 函 数对请求的 url 返回一个 respons 对象。这
个 respons 是一个像 file 的对象,这意味着你能用 .read() 函数操作这个 respon
对象:
import urllib2
req = urllib2.Request('http://blog.chenpeng.info/') response =
urllib2.urlopen(req) the_page = response.read()
注意 urlib2 利用了同样的 Request 接口来处理所有的 url 协议。例如,你可以
像这样请求一个 ftpRequest :
req = urllib2.Request('ftp://ftp.chenpeng.info/')
对于 HTTP,Request 对象允许你做两件额外的事: 第一,你可以向服务器发送数
据。第二,你可以向服务器发送额外的信息( metadata),这些信息可以是关于
数据本身的,或者是关于这个请求本身的–这些信息被当作 HTTP头发送。让我
们依次看一下这些。
数据:
有时你想向一个 URL发送数据(通常这些数据是代表一些 CGI 脚本或者其他的
web应用)。对于 HTTP,这通常叫做一个 Post。当你发送一个你 在网上填的 form
(表单)时,这通常是你的浏览器所做的。并不是所有的 Post 请求都来自 HTML
表单,这些数据需要被以标准的方式 encode,然后 作为一个数据参数传送给
Request 对象。 Encoding 是在 urlib 中完成的,而不是在 urlib2 中完成的。
import urllib
import urllib2