一个从Linux镜像站点递归下载文件的脚本

前面在研究libvirt-test-API这个开源框架时,里面的很多测试用例都是从头开始安装guest系统的,而且默认是从远程的一个URL来安装(URL配置在kickstart配置文件中)。找了国内的镜像(如:http://mirrors.163.com/centos/6.7/os/x86_64),觉得速度还是不如自己本机自己提供镜像文件来得快,所以想下载那里的一些文件,写了这个脚本。

脚本看起来并不太复杂,主要思路是先找到所有文件的URL(包括所有子目录中的文件)然后下载。我采用了urls_dict这个字典,以path为key,value中有它这个path下所有的文件名列表(files)、父目录(parent)、子目录列表(sub_dirs),先递归算法生成这个urls_dict,然后逐个目录下载其文件(下载时只用到了urls_dict中的key和value中的files)。用到了requests库来发送http请求,用到了BeautifulSoup来解析html文件。

主要在写get_urls_dict这个递归函数时,最开始思路不太清晰,后来只要把递归退出条件、两种条件下不同的递归方式弄清楚,代码写起来就容易了。

好吧,代码在https://github.com/smilejay/python/blob/master/py2015/download_repos.py,如下(写得不太好,欢迎拍砖):

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注