ウェブページを取得して、ローカルファイルに名前を付けて保存: curl -o thatpage.html http://www.netscape.com/
curl によるデータのポストは簡単である。 -d データ オプションを用いる。 ポストデータは URL エンコードしておかなければならない。 簡単な name と phone のポスト: curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
# NTLM認証もしくはDigest認証のかかったサイトにアクセス(--anyauth) $ curl --anyauth --user USERID:PASSWORD http://www.example.com/
curl コマンド、ちょくちょく使うけどオプション忘れてまう
curlのversion7.70.0からは、フォーマットの指定部分で -w '%{json}' のようにして取得できる全ての項目をjson形式で出力できます。
-O だと、リクエスト先の名前でファイルを保存します。
-Lがリダイレクトに対応、-Oがファイルに保存(指定しないと標準出力です。) $ curl -L -O [URL]
% curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"user":{"first_name":"first name", ...}}' http://localhost:3000/api/1/users
インターネットに出られるけれど、インターネットから入ってこれないサーバの死活監視を、お気軽にしたい。
$ curl -LI mazgi.com -o /dev/null -w '%{http_code}\n' -s
curl -L --output /dev/null --silent --show-error --write-out 'lookup: %{time_namelookup}\nconnect: %{time_connect}\nappconnect: %{time_appconnect}\npretransfer: %{time_pretransfer}\nredirect: %{time_redirect}\nstarttransfer: %{time_starttransfer}\ntotal: %{time_total}\n' 'google.com'
コマンドラインツールのcurlを用いてHTTPによる通信のパフォーマンスを調べる方法を考えていこうと思います。
curl でも、連続したページの取得ができます。それが --next オプションです。 curl に--config/-K オプションをつけると連続してデータ取得をバッチ処理してくれます。
たとえば、RSSを取得してタイトルと要素を引っ張り出す場合は cat /rss/channel/item[0]/title" | xmllint --shell "抽出したいxmlファイル
最低限の取得スクリプト例 わかりやすいようにシェルスクリプトです。長時間試験していません。