首先用python的爬虫可以做很多的事情,今天主要做一下利用urllib这个包中的方法从网上下载一些东西
一、python下载网络资源
python中下载需要用到的是urllib这个模块,先介绍一下这个模块的一些方法:
urllib.urlopen(url[, data[, proxies]])url就是下载网站的url地址;
data = urllib.urlencode({"contains":"buddy"}) u = urllib.urlopen("http://localhost/users/all/?%s" % data)或者我们可以使用POST方式:
data = urllib.urlencode({"name":"buddy lindsey","height":"5 foot 5 inches"}) u = urllib.urlopen("http://localhost/users/create", data)这样我们的参数就可以传递过去了,不过一般情况下是不需要的。
# Use http://www.someproxy.com:3128 for http proxying proxies = {'http': 'http://www.someproxy.com:3128'} filehandle = urllib.urlopen(some_url, proxies=proxies) # Don't use any proxies filehandle = urllib.urlopen(some_url, proxies={}) # Use proxies from environment - both versions are equivalent filehandle = urllib.urlopen(some_url, proxies=None) filehandle = urllib.urlopen(some_url)这个方法中后两个参数是可选的,一般情况下我们只要指定url就可以了,data默认就是None,proxies在默认的情况下也是None。
urllib.urlretrieve(url[, filename[, reporthook[, data]]])urlretrieve方法直接将远程数据下载到本地。参数filename指定了保存到本地的路径;参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调,该回调函数有三个参数。参数data指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。下面是一个完整的使用urllib的例子,从网站上下载html的内容保存到本地文件
# -*- coding:utf-8 -*- import urllib def hook(a, b, c): '''回调函数 @a: 已经下载的数据块 @b: 数据块的大小 @c: 远程文件的大小 ''' per = 100.0 * a * b / c if per > 100: per = 100 print '%.2f%%' % per url = 'http://www.csdn.net' local = 'd://csdn.html' urllib.urlretrieve(url, local, hook)
参考:
http://www.stamhe.com/?p=1091
http://buddylindsey.com/basic-urllib-get-and-post-with-and-without-data/
http://tool.oschina.net/apidocs/apidoc?api=python2.7.3