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