事象
国土地理院が提供している標高APIにwgetコマンドベースでアクセスするも情報が取得できない。
以下はサンプルURL
http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=140.08531&lat=36.103543&outtype=JSON
ブラウザでは情報が取得でき
{"elevation":25.3,"hsrc":"5m\uff08\u30ec\u30fc\u30b6\uff09"}
と画面に表示される。
wgetでの発行コマンド。-O -
オプションで標準出力にデータを表示させている。
$ wget -O - http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=140.08531\&lat=36.103543&outtype=JSON 2>/dev/null
原因
wgetコマンドで&マーク付きのURLを入力して情報取得を試みるも&マークで区切られてしまう。
解決策
&マークを「\」でエスケープする。
実際のコマンド押下の結果。ブラウザ上で確認した値と同等のものが取得できている。
$ wget -O - http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=140.08531\&lat=36.103543\&outtype=JSON 2>/dev/null {"elevation":25.3,"hsrc":"5m\uff08\u30ec\u30fc\u30b6\uff09"}
以下、補足です。
補足
そのままコマンドを打つと
$ wget -O - http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=140.08531&lat=36.103543&outtype=JSON 2>/dev/null [1] 32137 [2] 32138 $ --20XX-XX-XX XX:XX:XX-- http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=140.08531 Resolving cyberjapandata2.gsi.go.jp (cyberjapandata2.gsi.go.jp)... XX.XX.XX.XXX Connecting to cyberjapandata2.gsi.go.jp (cyberjapandata2.gsi.go.jp)|XX.XX.XX.XX|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 36 [application/json] Saving to: ‘STDOUT’ 20XX-XX-XX XX:XX:XX (4.54 MB/s) - written to stdout [36/36]
で画面が入力待ちで停止しEnterキーを押下すると
[1]- Done wget -O - http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=140.08531 [2]+ Done lat=36.103543
と表示されるのみで値が取得できません。
コマンドのバージョンに寄るのかもしれませんが同様の事象が発生した方は試しにエスケープを利用してみることをお勧めします。
$ wget --version GNU Wget 1.18 built on linux-gnu.
後続の方の参考になれば幸いです。