Google画像検索の1件目をダウンロードするスクリプト
どこかで記載済みかも知れないけども、少し改変したので、改めてメモしておきます。
スクリプト
#!/bin/sh UA=Mozilla/5 URL=http://www.google.com/images?q=$(echo $* | nkf -WwMQ | tr = %) curl -s -A $UA $URL | sed 's/>/>\n/g' | sed 's/?/\n/g' | sed 's/&/\n/g' | sed 's/%/\n/g' | grep imgurl | sed -n 1p | cut -d'=' -f2 | wget -i - -U $UA
使い方
「gimg.sh」という名前でスクリプトを保存したとすると、以下の様に使います。
例) 「Linux」で1件目にヒットする画像をダウンロード
$ chmod u+x gimg.sh $ ./gimg.sh Linux --2013-03-20 17:53:08-- http://scienceblogs.com/gregladen/files/2013/02/Linux.jpg scienceblogs.com をDNSに問いあわせています... 198.101.128.171 scienceblogs.com|198.101.128.171|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 15150 (15K) [image/jpeg] `Linux.jpg' に保存中 100%[================================================================================================================================================================>] 15,150 40.6K/s 時間 0.4s 2013-03-20 17:53:09 (40.6 KB/s) - `Linux.jpg' へ保存完了 [15150/15150] 終了しました --2013-03-20 17:53:09-- ダウンロード完了: 1 ファイル、15K バイトを 0.4s で取得 (40.6 KB/s)
保存する際の画像ファイルの名前は、ウェブ上の元々の画像ファイル名のままです。
上記のスクリプトでは、wgetには標準出力を抑制するオプション(-qあるいは--quiet)をつけていないので、
wgetの出力から、ダウンロードされた画像ファイル名を確認してください。
(上記の例の場合は、「Linux.jpg」という名前で保存されています。)
また、日本語キーワードや、複数キーワードにも対応しています。
例)
$ ./gimg.sh 上田 $ ./gimg.sh linus linux
補足
実際にブラウザ上で画像検索を行った場合と1件目の画像が異なる場合があります。
おそらく、curlコマンドで指定しているユーザーエージェントや、その他のヘッダ情報などが関係していると思います。
あくまでもお遊びのものなので、ここではこの程度で済ませておきます。