看到urllib 和urllib2不免都会有疑问,它们的区别是什么。
区别:
urllib 和urllib2都是接受URL请求的相关模块,但是urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。
demo1:
import urllib
baidu = urllib.urlopen('http://www.baidu.com')
print ('http header:/n',baidu.info())
print ('http status:/n',baidu.getcode())
print ('http url:/n',baidu.geturl())
#读取页面内容
for line in baidu:
print line
baidu.close()
demo2:
import urllib
import urllib2
url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'# 将user_agent写入头信息
values = {'name' : 'who','password':'123456'}
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
demo3:
import urllib
def cbk(a, b, c):
"""回调函数
@a: 已经下载的数据块
@b: 数据块的大小
@c: 远程文件的大小
"""
per = 100.0 * a * b / c
if per > 100:
per = 100
print '%.2f%%' % per
url = 'http://www.sina.com.cn'
local = '/Users/rayootech/Documents/python2/static/sina.html'
urllib.urlretrieve(url, local, cbk) #下载文件