0

HTMLを解析するためにJSOUPを使用してAndroidアプリケーションを開発しています。

私はHTML構文を持っています

    <div class='wrapper'>   
<div style='margin:7px;'>
    <div class='box' style='height:595px'>
        <div class='boxtitlebox'>
            <div class='boxtitle'><h4>13 RECENT CHORDS</h4></div><div class='clear'></div>
        </div>

        <div class='listitem'><a href='http://www.chordfrenzy.com/chord/9742/ungu-apa-sih-maumu-kord-lirik-lagu'>           
            <div class='subtitle'>Chord Ungu</div>
            <div class='title'>Apa Sih Maumu</div>
        </a></div>
        <div class='listitem'><a href='http://www.chordfrenzy.com/chord/6826/slank-boneka-tersayang-kord-lirik-lagu'>           
            <div class='subtitle'>Chord Slank</div>
            <div class='title'>Boneka Tersayang</div>
        </a></div>
        <div class='listitem'><a href='http://www.chordfrenzy.com/chord/6751/ari-lasso-rayuan-gombal-kord-lirik-lagu'>          
            <div class='subtitle'>Chord Ari Lasso</div>
            <div class='title'>Rayuan Gombal</div>
        </a></div>
        </div>
</div>
 </div>

さて、上記の各ahrefサブタイトル、およびタイトルを取得するにはどうすればよいか混乱していますか?

このように配列を埋めるために必要です

String[] link=["http://www.chordfrenzy.com/chord/9742/ungu-apa-sih-maumu-kord-lirik-lagu","http://www.chordfrenzy.com/chord/6826/slank-boneka-tersayang-kord-lirik-lagu","http://www.chordfrenzy.com/chord/6751/ari-lasso-rayuan-gombal-kord-lirik-lagu"];
String[] subtitile=["Chord Ungu","Chord Slank","Chord Ari Lasso"];
String[] title=["Apa Sih Maumu","Boneka Tersayang","Rayuan Gombal"];

アイデアはありますか?

4

3 に答える 3

5

一般に、DOM ではなくセレクター APIgetElementsByXを使用することをお勧めします ( )

次に例を示します。

Document doc = Jsoup.parse(html);


// Links
List<String> links = new ArrayList<>();

for( Element element : doc.select("a[href]") )
{
    links.add(element.attr("href"));
}


// Subtitles
List<String> subtitles = new ArrayList<>();

for( Element element : doc.select("div[class=subtitle]") )
{
    subtitles.add(element.text());
}


// Titles
List<String> titles = new ArrayList<>();

for( Element element : doc.select("div[class=title]") )
{
    titles.add(element.text());
}

要素はタグと属性によって選択されます。タグが異なるか関連がない場合は、それらを削除できます (例:[class=title]の代わりにdiv[class=title])。その他のヒントについては、Selector API (上記のリンク) を参照してください。

于 2012-09-23T16:44:42.637 に答える
1
 Document document = Jsoup.parse(html);

         Elements hrefElements = document.select("div.listitem");

         String[] links = new String[hrefElements.size()];
         String[] title = new String[hrefElements.size()];
         String[] subtitle = new String[hrefElements.size()];

         for(int i=0;i<hrefElements.size();i++)
         {
             links[i] = hrefElements.get(i).getElementsByTag("a").attr("href");
             title[i] = hrefElements.get(i).getElementsByClass("title").text();
             subtitle[i] = hrefElements.get(i).getElementsByClass("subtitle").text();
         }


         for(int j=0;j<hrefElements.size();j++)
         {
             System.out.println("Links: "+links[j]);
             System.out.println("Title: "+title[j]);
             System.out.println("SubTitle: "+subtitle[j]);
         }
于 2012-09-28T08:15:42.380 に答える
0

ArrayList文字列の配列よりも構造が優れていると思います

Elements links = doc.getElementsByClass("listitem");
Elements subtitles = doc.getElementsByClass("subtitle");
Elements titles = doc.getElementsByClass("title");
List<String> link = new ArrayList<String>();
List<String> subtitile = new ArrayList<String>();
List<String> title = new ArrayList<String>();
for (Element e : links) {
    String href = e.getElementsByAttribute("href").first().attr("href");
    link.add(href);
}
for (Element e : subtitles) {
    String s = e.text();
    subtitile.add(s);
}
for (Element e : titles) {
    String s = e.text();
    title.add(s);
}
于 2012-09-22T17:57:52.083 に答える