1,获取 URLs
实例:
import urllib2
req =urllib2.Request('http://www.pythontab.com')
response =urllib2.urlopen(req)
the_page =response.read()
解释:
HTTP是基于请求和应答机制的--客户端提出请求,服务端提供应答。urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。
2,data数据
并不是所有的POSTs都来源于表单,你能够使用POST提交任意的数据到你自己的程序。一般的HTML表单,data需要编码成标准形式。然后做为data参数传到Request对象。编码工作使用urllib的函数而非urllib2。
importurllib
importurllib2
url ='http://www.pythontab.com'
values ={'name': 'Michael Foord',
'location': 'pythontab',
'language': 'Python'}
data =urllib.urlencode(values)
req =urllib2.Request(url, data)
response =urllib2.urlopen(req)
the_page =response.read()
3,Headers
我们将在这里讨论特定的HTTP头,来说明怎样添加headers到你的HTTP请求。有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器。默认的urllib2把自己作为“Python-urllib/x.y”(x和y是Python主版本和次版本号,例如Python-urllib/2.5),这个身份可能会让站点迷惑,或者干脆不工作。浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。
importurllib
importurllib2
url ='http://www.pythontab.com'
user_agent ='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values ={'name': 'Michael Foord',
'location': 'pythontab',
'language': 'Python'}
headers ={ 'User-Agent': user_agent }
data =urllib.urlencode(values)
req =urllib2.Request(url, data, headers)
response =urllib2.urlopen(req)
the_page =response.read()
4,Handle Exceptions处理异常
当urlopen不能够处理一个response时,产生urlError(不过通常的Python APIs异常如ValueError,TypeError等也会同时产生)。
HTTPError是urlError的子类,通常在特定HTTP URLs中产生。
5,HTTPError
服务器上每一个HTTP 应答对象response包含一个数字"状态码"。有时状态码指出服务器无法完成请求。默认的处理器会为你处理一部分这种应答(例如:假如response是一个"重定向",需要客户端从别的地址获取文档,urllib2将为你处理)。其他不能处理的,urlopen会产生一个HTTPError。典型的错误包含"404"(页面无法找到),"403"(请求禁止),和"401"(带验证请求)。
请看RFC 2616 第十节有所有的HTTP错误码
HTTPError实例产生后会有一个整型'code'属性,是服务器发送的相关错误号。
网友评论