次のゲーム&ウォッチ再現に取り掛かる前に、別のオリジナルゲームを作るための元ネタというか、技術研究をやっていこうと思う。
そのうちの1つが、HTTPアクセス。ネットの特定のページの情報をHTMLの中から拾い出して、使いたいと思っている。
HSP3.6自体にはHTTPアクセス用の命令は無いのだが、Dishであれば簡易的なアクセスができる命令が用意されている。
そのほかの方法としては、拡張モジュール"hspinet.as”を使う方法がある。
しかし、これはWindowsAPIを使うので、Androidアプリにしたときに使えない。
そういうわけで、Dishの命令で、どれだけのことができるかを試していく。
幸い、サンプルプログラムがあるので、流れを確認。
httpload命令でリクエストを投げられる。
リクエストが返ってきたら、httpinfo命令で取得できる。
それをバッファの変数に放り込んでやるという流れのようだ。
HTTPのリクエストには、GETとPOSTの二種類があって、若干動きが変わってくる。
URLにパラメータを含めて送るのがGET。POSTは良くある入力フォームなどで「送信」ボタンを押すと、入力項目のデータが渡せる方式。
今回は、天気予報の情報を取得して、抜き出すことにチャレンジ。
wttr.inというサイトに、パラメータを付けてアクセスすると、世界中の天気予報がテキストで取得できる。
例えば、ブラウザに https://wttr.in/tokyo と入力して、Enterキーを押せば、東京の天気予報が表示できる。
天気予報: tokyo \ / 所により曇り _ /"".-. 20 °C \_( ). ↗ 45 km/h /(___(__) 10 km 0.0 mm ┌─────────────┐ ┌──────────────────────────────┬───────────────────────┤ 火 09 11月 ├───────────────────────┬──────────────────────────────┐ │ 朝 │ 昼 └──────┬──────┘ 夕 │ 夜 │ ├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤ │ 曇り │ _`/"".-. 驟雨または強… │ \ / 所により曇り │ \ / 所により曇り │ │ .--. +22(25) °C │ ,\_( ). +22(25) °C │ _ /"".-. 21 °C │ _ /"".-. 20 °C │ │ .-( ). ↖ 44-72 km/h │ /(___(__) ↑ 41-72 km/h │ \_( ). ↗ 33-40 km/h │ \_( ). ↗ 45-56 km/h │ │ (___.__)__) 10 km │ ‚‘‚‘‚‘‚‘ 7 km │ /(___(__) 10 km │ /(___(__) 10 km │ │ 0.0 mm | 0% │ ‚’‚’‚’‚’ 5.0 mm | 99% │ 0.0 mm | 0% │ 0.0 mm | 0% │ └──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘ ┌─────────────┐ ┌──────────────────────────────┬───────────────────────┤ 水 10 11月 ├───────────────────────┬──────────────────────────────┐ │ 朝 │ 昼 └──────┬──────┘ 夕 │ 夜 │ ├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤ │ \ / 所により曇り │ \ / 所により曇り │ _`/"".-. 所により雨 │ \ / 所により曇り │ │ _ /"".-. 18 °C │ _ /"".-. 18 °C │ ,\_( ). 18 °C │ _ /"".-. 18 °C │ │ \_( ). → 64-74 km/h │ \_( ). → 50-58 km/h │ /(___(__) → 45-51 km/h │ \_( ). → 46-53 km/h │ │ /(___(__) 10 km │ /(___(__) 10 km │ ‘ ‘ ‘ ‘ 10 km │ /(___(__) 10 km │ │ 0.0 mm | 0% │ 0.0 mm | 0% │ ‘ ‘ ‘ ‘ 0.1 mm | 60% │ 0.0 mm | 0% │ └──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘ ┌─────────────┐ ┌──────────────────────────────┬───────────────────────┤ 木 11 11月 ├───────────────────────┬──────────────────────────────┐ │ 朝 │ 昼 └──────┬──────┘ 夕 │ 夜 │ ├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤ │ 曇り │ 曇り │ \ / 所により曇り │ 曇り │ │ .--. 18 °C │ .--. 18 °C │ _ /"".-. 18 °C │ .--. 18 °C │ │ .-( ). → 49-57 km/h │ .-( ). → 52-60 km/h │ \_( ). → 46-53 km/h │ .-( ). → 47-54 km/h │ │ (___.__)__) 10 km │ (___.__)__) 10 km │ /(___(__) 10 km │ (___.__)__) 10 km │ │ 0.0 mm | 0% │ 0.0 mm | 0% │ 0.0 mm | 0% │ 0.0 mm | 0% │ └──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘ 位置情報: 東京都, 日本 [34.2255804,139.294774527387]
この情報を取得して、HTMLから情報を抜き出そうとした。
HTTP操作のサンプルもあり、取得自体を行うプログラムは一から作る必要がなかった。
URLを与えて、単純にHTMLを取得することは簡単にできたのだが、もちろんHTMLのタグも付いてきているので膨大な文字数に…
これから天気予報の情報を抜き出すのは超面倒…処理も遅くなりそう。
とにかくHTMLの情報量を少なくするオプションは無いか探していたが、なかなか見つからない。
パラメータのヘルプは、https://wttr.in/:help で表示できるのだが、ここには書いていないオプションがあった。
githubのwttr.inのページを見ると、JSONで取得ができる!
JSONなら、HTMLよりはパースしやすいかなと思い、作り始めたのだが…