您的位置:首页 > 其它

使用curl在命令行中下载文件

2015-10-14 13:09 471 查看
连接:http://www.xuebuyuan.com/1253172.html

今天帮同学从一个网站上下载点数据, 但是上面有上百个链接, 一个一个点击下载实在是工作量太大。 于是自己就想找一个命令行下载工具并用Python写一个简单的脚本来替代这些工作。

百度了一下, 找到了curl

curl: curl是利用URL语法在命令行方式下工作的文件传输工具。 [百科:


http://baike.baidu.com/view/1326315.htm]

官网: http://curl.haxx.se/

其中libcurl有C语言、Python接口(PyCurl:
http://pycurl.sourceforge.net/)等等。 curl.exe也可以作为一个命令行下载工具。

将来学习了多线程, 可以改为多线程下载



最简单的下载语法:

curl -o [filename] <url>

例如:

Microsoft Windows [版本 6.0.6001]
版权所有 (C) 2006 Microsoft Corporation。保留所有权利。

C:\Windows\system32>curl -o E:\MIT_BIH_Arrhythmia_Database\103.dat  http://physionet.org/physiobank/database/mitdb/103.dat % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
1 1904k    1 23082    0     0   3582      0  0:09:04  0:00:06  0:08:58  3556


这样子就从网页http://physionet.org/physiobank/database/mitdb/103.dat把文件103.dat下载到本地E盘E:\MIT_BIH_Arrhythmia_Database\103.dat

curl --head <url>

获取下载文件的大小。例如:

C:\Windows\system32>curl --head http://physionet.org/physiobank/database/mitdb/100.atr HTTP/1.1 200 OK
Date: Mon, 28 Nov 2011 05:35:46 GMT
Server: Apache/2.2.17 (Fedora)
Last-Modified: Thu, 30 Jul 1992 01:21:18 GMT
ETag: "82c1c18-11ce-287fa5a2e9f80"
Accept-Ranges: bytes
Content-Length: 4558
Connection: close
Content-Type: application/octet-stream


curl --connect-timeout <seconds> <url>

(参考: http://blog.csdn.net/learnhard/article/details/5683703)
连接超时时间设置。

curl -m <seconds> <url>

传输数据超时时间设置。 例如:

C:\Windows\system32>curl -o E:\MIT_BIH_Arrhythmia_Database\104.dat  -m 20 "http://physionet.org/physiobank/database/mitdb/104.dat"
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
1 1904k    1 20162    0     0    953      0  0:34:06  0:00:21  0:33:45   377
curl: (28) Operation timed out after 20000 milliseconds with 20162 out of 195000
0 bytes received


更多命令请参考:

/article/7743329.html

# !/usr/bin/env python
# Filename: down.py
# download files from http://physionet.org/physiobank/database/mitdb/ 
import os

home = r"E:\MIT_BIH_Arrhythmia_Database"
fext = [".atr", ".dat", ".hea"]
hurl = r"http://physionet.org/physiobank/database/mitdb/"

for ext in fext:
    for index in range(100, 234):
        fname  = str(index) + ext
        fsave  = home + os.path.sep + fname
        fget   = hurl + fname
        if False == os.path.isfile(fsave):
            command = "curl -o " + fsave + " " + fget
            os.system(command)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: