【Android】定期的にサイト情報を取得2
~サイトから情報を抽出する~
前回の続きです。
こちらの①を作っていきます。

まず、ひな型のプログラムを見ると、「MainActivity」クラスと以下の関数が存在します。
onCreateOptionsMenu
onOptionsItemSelected
onSupportNavigateUp
この中で今回必要なメソッドはonCreateだけです!なので、onCreate以外は削除しましょう。
今回は、サイトにアクセスするプログラムを書く前に、どのようにサイトから情報を取得するか記載していきます。
初めに、サイトにどのようにアクセスするかですが、まず定期的にアクセスしたいサイトを開いてみてください。
例えば私の場合、不動産サイトで家賃やこだわり条件などを入れた結果のページを対象とします。
こんな感じになるはず↓

その時のURLを確認すると、以下のようになっています。
URLは、「?」より後ろがサーバーに渡す情報となっています(URLパラメーターと呼びます)。
URLパラメーターを少し見てみると「price=-80000」というものがあります。
これは、私が不動産サイトの条件に入れた、「毎月の賃貸料が8万円以内」という条件をサーバーに渡しているということが推測できます。
つまり、URLパラメーターを含めたURLでアクセスることで、希望条件の賃貸物件がいつでも表示できるということです。
このように、URLにパラメーターを入力してサイトにアクセスすることを「GET」と呼びます。
「GET」のほかに「POST」や「PUT」などのアクセス方法がありますが、今回は「GET」でアクセスすればサイト情報を取得できるため「GET」だけを考えます。
では、上記URLでアクセスするとどのような情報が取得できるか、Windowsのコマンドプロンプトで確認します。
「Windows」キーをクリックし、「cmd」と検索すると「コマンドプロンプト」というアプリが表示されるので起動します。
このような黒い画面が表示されます。↓

この画面で「curl」コマンドというものを使用すると、サイトにアクセスしたときに取得できる情報が何かわかります。
以下を入力してEnterキーを押してみましょう。※URLを「”」で囲むのをお忘れなく!
コマンドを実行すると、大量の文字が一気に表示されるかと思います。
これは、サイトにアクセスした際に取得したHTMLがそのまま表示されている状態です。

この大量の文字の中から、物件のタイトルだけを取得して、定期的に物件が更新されていないかを確認したいのです!
コマンドプロンプトだと取得したHTMLを確認するには不便なので、取得したHTMLを一度テキストファイルに書き出したいと思います。
Cドライブに適当なフォルダ「tmp」を作って、その中に「結果.txt」というファイルを作ります。

そして、次のコマンドを実行します。
実行すると、取得したHTMLが「結果.txt」に出力されます。
「結果.txt」をサクラエディタを使って開いてみましょう。
すると以下のように表示されます。

この文字の中から、まずは物件情報名で検索してみます。
今回の場合、物件のタイトルとして使用されている「☆退去前・申込有☆ 3/中旬退去予定・駐車場は建物下縦列2台付になります」を探してみます。

サクラエディタを開いたまま、キーボードで「ctl」+「f」を押して、「条件」に「☆退去前・申込有☆ 3/中旬退去予定・駐車場は建物下縦列2台付になります」を入れてEnterキーを押します。
すると、以下のように該当箇所が検索されます。

続けてEnterキーを押しても、他にヒットする箇所はありません。
つまり、HTML全体から、この部分のみ抽出できれば物件名を取得できることが分かります。
物件タイトルの前に書かれている文字を見てみると、「div class=”comment web_pr」というものがあります。
この文字が物件タイトルの特定につながるのではないかと推測でき、さっそく検索してみます。

おおー。「div class=”comment web_pr」は物件タイトルの前だけについていることが分かりました。
つまり、「div class=”comment web_pr」から始まる1行の文字を取得すれば物件名が取得できそうですね。
文字を取得するために正規表現と呼ばれる表現方法を使用しましょう。
サクラエディタで、検索条件の「正規表現」にチェックをつけて、以下の文字を検索します。
この正規表現は、「div class=”comment web_pr”><p>」の後ろから、「</p>」の前までの文字
を検索しています。
今回取得したHTMLで、上記の正規表現でマッチする箇所は以下となります。
- ☆退去前・申込有☆ 3/中旬退去予定・駐車場は建物下縦列2台付になります☆ ~以下略~
- 8月末空き予定 3階角部屋・駐車2台付です。小学校近くて安心です。
- お気軽にお問い合わせ下さい。
これらは、不動産サイトで表示された物件タイトルと同じものとなります。

サイトによって検索する文字は変える必要がありますが、HTMLの共通点を見つけ、正規表現で検索することで、どの物件が出ているのか知ることができました。
今回はここまでとなります。次回は、今回紹介した「GET」と「正規表現」をプログラミングしていきます。