niftyにある明日の降水確率を取り出せなかった回の記事(リンク)にコメントをくださった方がいます。
nifty天気予報のWebページがshift_JISのため、文字化けしたソースコードが取得されており、℃での分割に失敗しています。yahooやtenki,jpなど、UTF-8のページから取得したほうが良いと思います。
なるほど。この指摘はKWLPはshift_JISには対応していないとの事実を教えてくれます。試してみたところ、
はい。10%となるべきところの%が文字化けして??に。分割に使用したかった℃も??でしたので、これが原因だったようです。
仕切り直しで新たに、エンコードにUFT-8を指定している天気予報サービスを探します。
So-netが翌日1日のざっくりとした降水確率を教えてくれます。
metaタグで charset="UTF-8"がありますし、一日のおおまかな情報がjavaとかではなくHTMLコードの中にも見えますから大丈夫でしょう。
今日明日天気のコードは下。
さて既にrainにマーカーが。ここを起点にコマンドを書きます。
$tc(cut, tc(split, tc(split, wg(gv(tmrwosak), raw), "rain", 2), ">", 1), 3)$
グローバル変数「tmrwosak」のHTMLコード内で、「rain」を基準に区切った3番目を、「>」で分けた2つ目の最初から3文字だけを切り取る。
結果として表示される文字はこちら。
ちゃんと「10%」だけが表示されましたね。これだと0%だった場合に0%<と表示されますが、我慢するしかありません。私にはそこをどうにかする気が起きません。
他のページも同じような記述のようなので、URLを変えれば別の地域も引っ張ってこられます。
成功例は以上。以下は失敗例。時間があればどうぞ。
成功の一段回前で、So-netの天気予報を使おうと考えて試したコードがあります。
ソースコード内で「=""」が使われているのは週間天気の部分と他一部のみ。
10%、20%、20%とかあるのを切り出すのに前回と同じKLWPコマンドを使いまわしましたが...
$tc(cut, tc(split, wg(gv(tmrwosak), raw), "="">", 1), 3)$
グローバル変数「tmrwosak」で指定したHTMLコードの中で、「="">」で区切った2番目(0が1番目なので)を3文字だけ切り抜く。成功例と同じようなコマンドです。
これは弾かれました。区切りに使う「="">」がダメで、指定する文字の中に「""」が入っているとKLWPがこんがらがってしまうようです。「err: a literal can't follow another literal」と言われます。おそらく指定の中にさらに引用が使われていると勘違いしてるのでしょう。
さて、2回にもわたって繰り広げられた天気予報との戦いも今回で終止符が打たれました。おつです。
tc(cut, "x", "y", z)とwg("a", raw)には可能性を感じますが、私はこれくらいで深追いをやめるとしましょう。
では、またお会いしましょう。