python中的urllib和urllib2

python中有urllib和urllib2两个模块,但并不是urllib2就完全可以取代urllib

看官方文档上的解释,
urllib (https://docs.python.org/2/library/urllib.html )
open arbitrary resources by URL.  This module provides a high-level interface for fetching data across the World Wide Web.  It can only open URLs for reading, and no seek operations are available.

urllib2 (https://docs.python.org/2/library/urllib2.html )
extensible library for opening URLs.  The urllib2 module defines functions and classes which help in opening URLs (mostly HTTP) in a complex world -  basic and digest authentication, redirections, cookies and more.

单看上面这点描述,并不能明白他们之间的区别。简单来说,他们都有些功能是对方没有的。所以,通常我们都将urllib和urllib2配合来使用。
- urllib提供urlencode方法,这个方法可以用来生成url查询参数,但urllib2就没有这个方法
- urllib2可以接受一个Request对象,来设置url请求的headers属性,也就是可以使用此方法来做请求的伪装

下面来看一个示例(这个例子参考自Python Cookbook):

#coding:utf-8

import urllib
import urllib2

url = 'http://httpbin.org/post'

# 查询参数
parms = {
         'name1': 'value1',
         'name2': 'value2'
         }
# 设置headers
headers = {
           'User-agent': 'felix /shanghai',
           'Spam ':'Eggs'
           }

# encode查询参数
querystring = urllib.urlencode(parms)

# 生成一个POST请求,并获取响应
request1 = urllib.urlopen(url, querystring.encode( 'ascii '))
response1 = request1.read()

# 生成一个修改了headers字段的请求,并获取响应
request2 = urllib2.Request(url, querystring.encode( 'ascii '), headers=headers)
response2 = urllib2.urlopen(request2).read()

print response1
print '============================='
print response2


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值