プロが教えるわが家の防犯対策術!

どなたかご教授下さい。linux初心者です。

気象庁の地震速報の詳細ページを日別に自動で入手したいのです。
たとえば今日ならば、ひとつのファイルは

http://www.jma.go.jp/jp/quake/20110612112208391- …

...112208391-121117が発生時刻と発表時刻となるようなので
規則性がありません。そこで:

$ wget http://www.jma.go.jp/jp/quake/20110612\d{9}-\d{6}.html

とやったのですが;

--2011-06-12 12:58:36--
http://www.jma.go.jp/jp/quake/20110612d%7B9%7D-d …
Resolving www.jma.go.jp (www.jma.go.jp)... 124.40.39.100
Connecting to www.jma.go.jp (www.jma.go.jp)|124.40.39.100|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2011-06-12 12:58:36 ERROR 404: Not Found.

となってしまいます。

これはwgetの正規表現がおかしいのでしょうか?

A 回答 (5件)

「正規表現の理 解不足だったようです。



自己解決がとんでもない方向にむかいそうなので軌道修正するよ。

まず、理解不足なのは「正規表現」じゃなくて、Linux のコマンドなら正規表現がつかえるだろうというおもいこみかな?

しらなかったかもしれないけど、wget は正規表現つかえないよ。正規表現がつかえるコマンドなんてもともとそんなに多くないし。

正規表現がつかえるコマンドかどうかは、
$ man コマンド名
で表示されるコマンドリファレンスのなかに正規表現のことがかいてあるからわかるとおもうよ。

あと、正規表現っていっても方言のようなものがあって、コマンドによってつかえる表現が少しずつちがうから注意してね!

正規表現を覚えるなら、とりあえず grep からでいいかな?
http://linuxjm.sourceforge.jp/html/GNU_grep/man1 …


質問の解決策は、[ANo.4] さんが回答してくれてるからとくにいらないよね。

よい Linux ライフを!
    • good
    • 0
この回答へのお礼

ありがとうございました。正規表現をdosのワイルドカードと誤解してしまい、ファイル名が不明でも規則に従ってwget出来る、と誤解していました。
unixは勉強し始めたばかりで、皆さんに迷惑をかけてしまいました。あれから自力でスクリプトを書いて(下記)みたのですが、やはり[ANo.4]が綺麗ですね。大変勉強になりました。

#(1)気象庁ファイルの抜き出し
wget http://www.jma.go.jp/jp/quake/quake_local_index. …
#(2)特定月日の行だけ抜く
awk '/20110612/ {print $0}' quake_local_index.html > quake.log
#(3)html部分だけ抜く
$ awk '{print substr($0,25,30)}' quake.log > add_quake.log
#(4)シェルスクリプト作成
cat add_quake.log | awk '{print "wget http://www.jma.go.jp/jp/quake"$1}' > jikko.sh
#(5)実行
sh jikko.sh

お礼日時:2011/06/13 10:30

地震の一覧ページを取得して、欲しい日付のファイルをダウンロードするスクリプトを書けばよいでしょう。


ということで書いてみました。

#!/bin/bash

# 前日の地震の情報を取得するスクリプト

date=`date +%Y%m%d --date=yesterday`
wget http://www.jma.go.jp/jp/quake/quake_local_index. … -O html.txt

for html in `grep "./$date" html.txt | cut -b 26-54`
do
wget -p --cut-dirs=2 http://www.jma.go.jp/jp/quake/$html
done
    • good
    • 0
この回答へのお礼

ありがとうございました。あれから自分でも考えて見よう見まねで作ってみたのですが、さすが見事なスクリプトです。大変勉強になりました。ご指導感謝します。

お礼日時:2011/06/13 10:31

httpでの通信では、一般的には、「有効なURLの一覧表」なんてものを受けとれるものではありません。


正規表現は、対象と比較してマッチするかどうかを調べるのに使うものです。
「比較対象」である「URL一覧」が無いのに、どうやって比較するのでしょう?

通常は、RSSとか、一覧表示するページとかから、正規表現にマッチするURLを抽出してそれをwgetで処理します。
    • good
    • 0
この回答へのお礼

申し訳ありません。正規表現の理解不足だったようです。もう少し勉強したいと思います。

お礼日時:2011/06/12 20:35

コマンドラインに書くURLに正規表現が使えるwgetがあるんでしょうか?



http://www.gnu.org/software/wget/manual/wget.html


\d{9}-\d{6} の『\d』ってこれ一般的な正規表現なのでしょうか?

http://www.kt.rim.or.jp/~kbk/regex/regex.html


# 回答でなく質問ですみません。
# お使いのwgetが特殊(?)な実装を施したものであるのなら・・・以下略
    • good
    • 0
この回答へのお礼

申し訳ありません。正規表現の理解不足だったようです。もう少し勉強したいと思います。

お礼日時:2011/06/12 20:36

正規表現?



リゾルバで別サイトへリダイレクトされているでしょう。
オプションをきちんと理解する方が良いです。
http://ja.m.wikipedia.org/wiki/2009%E5%B9%B4
    • good
    • 0
この回答へのお礼

申し訳ありません。正規表現の理解不足だったようです。もう少し勉強したいと思います。

お礼日時:2011/06/12 20:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!