使用 curl 下載資料

在 Shell 中進行資料處理

Susan Sun

Data Person

什麼是 curl?

curl

  • Client for URLs 的縮寫
  • 是 Unix 指令列工具
  • 與伺服器雙向傳輸資料
  • 用於從 HTTP(S) 網站與 FTP 伺服器下載資料
在 Shell 中進行資料處理

檢查 curl 安裝

檢查是否已安裝 curl

man curl

若尚未安裝 curl,你會看到:

curl command not found.

完整安裝說明請見 https://curl.haxx.se/download.html。

在 Shell 中進行資料處理

瀏覽 curl 手冊

如果已安裝 curl,你的主控台會像這樣:

在深色終端機視窗中顯示 curl 手冊開頭的螢幕截圖

在 Shell 中進行資料處理

瀏覽 curl 手冊

Enter 捲動。

在深色終端機視窗中顯示部分捲動的 curl 手冊螢幕截圖

q 離開。

在 Shell 中進行資料處理

學習 curl 語法

基本 curl 語法:

curl [option flags] [URL]

URL 為必填。

curl 也支援 HTTPHTTPSFTPSFTP

查看完整選項清單:

curl --help
在 Shell 中進行資料處理

下載單一檔案

範例

單一檔案位於:

https://websitename.com/datafilename.txt

用選用旗標 -O 以原檔名儲存:

curl -O https://websitename.com/datafilename.txt

若要重新命名,使用小寫 -o 加新檔名:

curl -o renameddatafilename.txt https://websitename.com/datafilename.txt
在 Shell 中進行資料處理

用 Globbing 下載多個檔案

延續前例:

https://websitename.com/datafilename001.txt
https://websitename.com/datafilename002.txt
...
https://websitename.com/datafilename100.txt

使用萬用字元解析器(Globbing Parser)

以下指令會依序下載從 datafilename001.txtdatafilename100.txt 的所有檔案。

curl -O https://websitename.com/datafilename[001-100].txt
在 Shell 中進行資料處理

用 Globbing 下載多個檔案

延續前例:

https://websitename.com/datafilename001.txt
https://websitename.com/datafilename002.txt
...
https://websitename.com/datafilename100.txt

使用萬用字元解析器(Globbing Parser)

以固定步長遞增,下載每隔 N 個檔案(例如 datafilename010.txtdatafilename020.txt、…、datafilename100.txt

curl -O https://websitename.com/datafilename[001-100:10].txt
在 Shell 中進行資料處理

預先除錯提示

發生逾時時,curl 有兩個特別有用的旗標:

  • -L 若出現 300 系列錯誤碼,重新導向 HTTP URL。

  • -C 若傳輸未完成就逾時,可續傳先前的檔案。

綜合應用:

curl -L -O -C https://websitename.com/datafilename[001-100].txt
  • 所有旗標都在 URL 之前。
  • 旗標順序不影響結果(例如 -L -C -O 皆可)。
在 Shell 中進行資料處理

祝你 curl 愉快!

在 Shell 中進行資料處理

Preparing Video For Download...