MoChiwakiブログ

女性エンジニアがゆる~く書く備忘録ブログ 〜だいたいいつもつまづいている〜

jsoupを軽く使ってみた件

例えば

HTMLソースからあのURLを取りたい!

という時どうするか。

いろいろ方法はあると思います。
textで一行ずつ読むとか
でもデバッグした時1行ずつ見られたら結構大変w
ってことでこのサイトを参考にしました。

Java SE 6 じゃじゃ馬ならし StAX

Java - jsoup使い方メモ - Qiita

jsoup 1.8.2-SNAPSHOT API

<html>
    <head></head>
    <body>
        <div id="sample1"> 
            <button data-action="apply" class="button">Apply</button> 
            <button data-action="clear" class="button">Clear</button> 
            <button data-action="download" class="button">Download</button> &nbsp;&nbsp; 
            <a href="http://hoge/MoChiwaki">Mochiwaki </a> &nbsp;&nbsp; 
            <a href="http://huga/Mochiwaki">dummy</a> 
        </div>

        <div id="sample2"> 
            <button class="button">Apply</button> 
            <button class="button">Clear</button> 
            <button class="button">Download</button> &nbsp;&nbsp; 
            <a href="http://hoooge/MoChiwaki">Mochiwaki2 </a> &nbsp;&nbsp; 
            <a href="http://huuuga/Mochiwaki">dummy</a> 
        </div>
    </body>
</html>

私はjsoupを使って書いてみましたー

/**
     * sample1のなかのMoChiwakiのURLを探すメソッド
     *
     * @param url
     * @return MoChiwakiのURL。 なければnull
     * @throws IOException
     */
    String getUrlOfMoChiwaki(String url) throws IOException {
        org.jsoup.nodes.Document document = Jsoup.connect(url).get();
        org.jsoup.nodes.Element div = document.getElementById("sample1");
        if (div != null) {
            Elements aTag = div.getElementsByTag("a");

            for (org.jsoup.nodes.Element elements : aTag) {
                if (elements.text().contains("MoChiwaki") {
                    return elements.attr("href");
                }
            }
        }
        return null;
    }

まずURLをもらってきてー
Elementでdivタグのsample1を取ってきてー
その中からaタグを取ってきてー
その中からMoChiwakiって書いてある所を探してー
URLだけ取ってくるっていう感じ!