优草派  >   Python

Python标准库urllib2的一些使用细节总结

徐晨光            来源:优草派

Python标准库中的urllib2模块是一个强大的HTTP客户端,它可以用来与Web服务器进行通信。本文将总结urllib2模块的使用细节,包括请求和响应的处理、异常处理、代理设置、Cookie管理以及认证。

请求和响应的处理

Python标准库urllib2的一些使用细节总结

使用urllib2模块发送HTTP请求并接收响应很简单,只需要使用urllib2.urlopen()函数即可。该函数返回一个file-like对象,可以使用read()方法来读取响应内容。

例如,要向http://example.com发送一个GET请求并打印响应内容,可以这样写:

```

import urllib2

response = urllib2.urlopen('http://example.com')

print response.read()

```

如果需要发送POST请求,可以使用urllib2.Request类和urllib2.urlopen()函数。首先创建一个Request对象,将请求方法设置为POST,并将要发送的数据作为参数传递给该对象。然后使用urllib2.urlopen()函数发送请求。

例如,要向http://example.com发送一个POST请求并打印响应内容,可以这样写:

```

import urllib

import urllib2

url = 'http://example.com'

data = urllib.urlencode({'key': 'value'})

req = urllib2.Request(url, data)

response = urllib2.urlopen(req)

print response.read()

```

异常处理

在使用urllib2模块发送HTTP请求时,可能会遇到各种异常。为了有效地处理这些异常,应该使用try/except语句来捕获它们。

例如,如果urllib2.urlopen()函数无法连接服务器或无法获取响应,将会引发urllib2.URLError异常。可以使用try/except语句来捕获这个异常,并打印出错误信息。

```

import urllib2

try:

response = urllib2.urlopen('http://example.com')

except urllib2.URLError as e:

print e.reason

```

代理设置

如果需要通过代理服务器发送HTTP请求,可以使用urllib2模块的ProxyHandler类。该类接受一个字典类型的参数,其中包含代理服务器的地址和端口号。

例如,要通过代理服务器http://proxy.example.com:8080发送HTTP请求,可以这样写:

```

import urllib2

proxy_handler = urllib2.ProxyHandler({'http': 'http://proxy.example.com:8080'})

opener = urllib2.build_opener(proxy_handler)

response = opener.open('http://example.com')

print response.read()

```

Cookie管理

在与Web服务器通信时,通常需要使用Cookie来维护会话状态。urllib2模块提供了一个CookieJar类来管理Cookie。可以使用该类来保存和发送Cookie。

例如,要发送Cookie,可以创建一个CookieJar对象,并将其添加到urllib2模块的OpenerDirector对象中。然后使用OpenerDirector对象来发送HTTP请求。

```

import cookielib

import urllib2

cookie_jar = cookielib.CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))

response = opener.open('http://example.com')

print response.read()

```

认证

在使用urllib2模块发送HTTP请求时,可能需要进行认证。urllib2模块提供了一个HTTPBasicAuthHandler类来进行基本认证。

例如,要向http://example.com发送一个需要认证的请求,并使用用户名和密码进行认证,可以这样写:

```

import urllib2

username = 'username'

password = 'password'

url = 'http://example.com'

password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()

password_manager.add_password(None, url, username, password)

auth_handler = urllib2.HTTPBasicAuthHandler(password_manager)

opener = urllib2.build_opener(auth_handler)

response = opener.open(url)

print response.read()

```

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行