最近维基 jie mi 彻底公布了网站的全部文件,我就在想如何使用 Python 将其下载到本地永久保存,于是就有了这篇文章。写爬虫会遇到很多坑,借鉴他人经验,考虑越全面,出错的概率就越小。
假如有这样的网站,里面有很多链接,有指向文件的,有指向新链接的,新链接点击进去后,页面上可能是文件,也可能是链接,类似一个文件夹,里面即有文件,又有目录。如何从这样的网站上下载所有的文件,并按网站的目录结构来保存这些文件呢?
关键词:Python 下载 正则表达式 递归。
按照自顶向下的程序设计原则,我们先整理出自己的思路,然后使用 Python 语言来翻译下即可。
思路:由于目录的深度不固定,也不可能穷举,且每一个目录的处理方式和子目录父目录的处理流程都是一样的,因此我们可以使用递归来处理所有文件。
递归代码必须要有退出条件,退出条件要放在前面,本例中的递归退出条件就是:如果是文件就下载,下载完递归函数即完成任务。
总体思路:
1、给定一个 url,判断是否是文件,如果是文件,下载即可,然后函数结束。
2、如果给定 url 不是文件,那么访问该 url,并获取它下面的所有链接。
3、遍历步骤 2 产生的链接,递归的执行步骤 1 和 2,直到程序运行结束。
以上思路,用代码来描述如下: