google検索するシェルスクリプトを書いたついでにfor文の練習もしたらグラフができた
端末からgoogle検索ができないかなあと思ったので、暇を見つけてシェルスクリプトを書いた。
ヒットした件数と、サイトのリンクの文字列だけ抜き出そうと思ったが、えらい面倒だったので件数を表示するだけで力尽きた。ってか3日くらいかかった。
実行すると、以下のようになる(あくまで例)。
$ ./googleSearch.sh 検索したい単語 検索結果 10,000,000 件
これを見ていて、
$ for i in `seq 1 100`; do ./googleSearch.sh $i; done
した結果をファイルに書き出してエディタで適当に整形してOpen Office Calcに流し込んでみた。
何をやっているかって言うと、「1」から「100」という数字をgoogle検索に掛けて件数だけ取り出した。
グラフに描いた結果は以下。
突出している値が、1,10,20,30,40,50のような「?0」という数字。?は正規表現的な意味で。
なぜか60が突出しないで、それ以降の数字が下がってる謎。突出率は低いけど、ちょっと周りから飛び出ているのが「?5」という数字だと言うことが分かる。
何か他の人がやってそうなことを改めてやってるんじゃないかという感じに襲われる。
最後にスクリプト張り逃げ。もうちょっとスマートに書けないかな。シェルスクリプトで使えるxmlのライブラリってないかな。
動かなくても責任持ちません。
#!/bin/bash URL='http://www.google.co.jp/search?q=' AGENT='User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9) Gecko/2008052906 Firefox/3.0' TMP_FILE="tempfile" if [ -n "x${1}" ]; then # 引数あった WORD=$1 else # 引数ない echo "前回の結果を表示" fi # wget if [ $# -gt 0 ]; then # debug echo $URL$WORD wget -q - -O $TMP_FILE --header="$AGENT" $URL$WORD fi cat $TMP_FILE | sed -e 's/検索結果/\n検索結果/' | sed -e 's/件/件\n/' | grep ^検索結果 | grep 件$ | tr -d "</b>" # no hit match=`cat $TMP_FILE | grep -c '一致する情報は見つかりませんでした。'` if [ $match -ne 0 ]; then echo "お探し物は見つかりませんでしたとgoogle先生はおっしゃっています" fi