python批量下载文件
最近感觉要练练口语了,所以就上普特逛逛有哪些资源比较好的,发现美国惯用语板块挺好的,但是点进去想下载音频时,发现浏览器已经解释了这个MP3格式的音频文件;要下载就只能右键另存为,总共有900多个,这么点来点去岂不是要点一天才能下完。
正当蛋疼之时,忽然发现了播放MP3文件的url格式比较统一,比如说下面这几个
前面的前缀都是相同的,可以推测在服务器上这些音频文件都是放到同一个文件夹下,而且会依据数字来加上前缀来命名,这就为脚本自动下载提供了一个很好的条件。
首先,从最简单的入手,就是下载给出url所代表的资源,代码如下
1
2
3
4
5
6import urllib2
url="http://down02.putclub.com/homepage/courses/middle/oftenused/wi_01.mp3"
f=urllib2.urlopen(url)
data=f.read()
with open("1.mp3","wb") as file:
file.write(data)
如果资源url的确存在,那执行脚本后会在当前目录生成跟一个名为1.mp3的音频文件,当然名称也可以自己取,这里为了简便就直接用数字来作为文件名了。如果资源url不存在则在urlopen
时就会抛出一个URLError
(实际上也的确有某几期不提供音频文件)。根据测试,发现音频文件的前缀有wi
、wi_
、putclub_mgxgy
、wi_0
这几种。所以总体思路就是先得到合法的url,再将其下载;因为基于数字命名,所以可以通过循环来批量下载。是不是很简单,这里给出完整的代码
1 | #encoding:utf-8 |
等到脚本执行完,在文件夹下就能得到下面这些文件,密集恐惧者可忽略
日志如下,经检查,这些资源本来就不存在
这个方法只限于那些资源名称有规律的文件下载,但是好像普特上的文件都是这么存储的,所以以后就能愉快的下载了。 对于我这种小白而言只能想出这种方法,如果你有更好的方法,欢迎交流。