使用urllib2,我们可以从Web服务器获取http响应.如果该服务器只保存文件列表,我们可以解析文件并单独下载.但是,我不确定解析文件的最简单,最pythonic的方法是什么.
当您获得通用文件服务器列表的完整http响应时,通过urllib2的urlopen()方法,我们如何能够整齐地下载每个文件?
Urllib2可能可以检索文件列表.对于下载大量二进制文件,PycURL http://pycurl.sourceforge.net/是更好的选择.这适用于我的基于IIS的文件服务器:
import re
import urllib2
import pycurl
url = "http://server.domain/"
path = "path/"
pattern = '<A HREF="/%s.*?">(.*?)</A>' % path
response = urllib2.urlopen(url+path).read()
for filename in re.findall(pattern, response):
fp = open(filename, "wb")
curl = pycurl.Curl()
curl.setopt(pycurl.URL, url+path+filename)
curl.setopt(pycurl.WRITEDATA, fp)
curl.perform()
curl.close()
fp.close()
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用urllib.urlretrieve(在Python 3.x:urllib.request.urlretrieve中):
import urllib
urllib.urlretrieve('http://site.com/', filename='filez.txt')
Run Code Online (Sandbox Code Playgroud)
这应该是工作:)
这是一个可以做同样事情的功能(使用urllib):
def download(url):
webFile = urllib.urlopen(url)
localFile = open(url.split('/')[-1], 'w')
localFile.write(webFile.read())
webFile.close()
localFile.close()
Run Code Online (Sandbox Code Playgroud)