(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】wgetコマンドの結果が&マークで区切られる事象

スポンサーリンク

事象

国土地理院が提供している標高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.

後続の方の参考になれば幸いです。