在一个网页上下载如图所示的分散的文件,此网站最起码有好几百个这样的文件,如果通过单击方式,得点几百次呢!
python2代码循环下载,试了一下,此代码只适合http协议的,如果是ftp协议就不好使了。
import re import sys import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def down_file(url): file_name = url.split('/')[-1] print file_name u = urllib.urlopen(url) f = open(file_name, 'wb') meta = u.info() file_size = int(meta.getheaders("Content-Length")[0]) file_size_dl = 0 block_sz = 8192 while True: buffer = u.read(block_sz) if not buffer: break file_size_dl += len(buffer) f.write(buffer) f.close() def getFile(html): compile_rule=re.compile(r'<a.*?href=".+".*?>(.*).tar.gz</a>') url_list=re.findall(compile_rule, html) str = r'.tar.gz' for one in url_list: url = "http://mirrors.ustc.edu.cn/gnome/desktop/2.91/2.91.2/sources/" +one+str print url down_file(url) return url_list html = getHtml("http://mirrors.ustc.edu.cn/gnome/desktop/2.91/2.91.2/sources/") print getFile(html)
ftp协议的咋办?我的方法是通过linux命令进行操作。因为我所要学习hadoop的项目,需要温度数据集。
于是,执行命令wget -D --accept-regex=REGEX -P data -r -c ftp://ftp.ncdc.noaa.gov/pub/data/noaa/2017/5*,结果出现wget: unable to resolve host address情况,简而言之,就是访不进外网,ping www.baidu.com也ping 不通
后来通过大佬博客才解决了棘手的问题。现在终于可以批量下载了,美滋滋。
上一篇:多元线性回归分析练习题 下一篇:数据挖掘之缺失值插补实验